如何验证Frisby Test中的200或201状态代码

时间:2016-09-13 20:40:09

标签: javascript rest jasmine jasmine-node frisby.js

我正在使用frisby v0.8.5和jasimine-node。使用frisby,可以使用以下内容来声明预期的返回http状态代码:

 f = frisby.create(/*stuff....*/);
 ...
 ... 
 f.expectStatus(200);
 f.toss();

如果端点具有单个预期状态,则此方法可以正常工作,但在某些情况下(如POST端点),如果资源已存在,您可能会返回创建的201200

有没有办法检查几个可接受的响应状态代码?

2 个答案:

答案 0 :(得分:0)

您可以通过创建本地文件Firsby libxyz.coffee添加额外的方法,您可以在其中提供xyz = require "./xyz"

Frisby = Object.getPrototypeOf(frisby.create())

Frisby.expectStatuses = (statuses) ->
  @current.expects.push =>
    expect(statuses).toContain(@current.response.status)
  return this

最终,您始终可以将上面的粘贴复制到spec.coffee文件中 毕竟,只需在脚本中使用:

.expectStatuses([200, 201])

完美地完成了这项工作。

答案 1 :(得分:0)

好的,找到了一种简单的方法,可以使用after()和本地茉莉花匹配功能来实现这一目的。

一般的想法是,由于弗里斯比是异步的,你需要在它被抛出并被捕获后检查结果。在原始结果中,您可以针对正则表达式手动验证状态代码,在这种情况下,正则表达式为200或201:

 f = frisby.create(/*stuff....*/);
 // ...
 // ... 

 f.after( function(err, res, body) {

     //Look for either a 200 or 201
     expect(res.statusCode).toMatch(//20[0|1]/);

 });

 f.toss();