我正在使用frisby
v0.8.5和jasimine-node
。使用frisby
,可以使用以下内容来声明预期的返回http状态代码:
f = frisby.create(/*stuff....*/);
...
...
f.expectStatus(200);
f.toss();
如果端点具有单个预期状态,则此方法可以正常工作,但在某些情况下(如POST端点),如果资源已存在,您可能会返回创建的201
或200
有没有办法检查几个可接受的响应状态代码?
答案 0 :(得分:0)
您可以通过创建本地文件Firsby lib
向xyz.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();