如何验证 Frisby 测试中的状态码是 200 还是 201
How to verify if either 200 or 201 status code in Frisby Test
我正在使用 frisby
v0.8.5 和 jasimine-node
。使用 frisby
可以断言预期的 return http 状态代码:
f = frisby.create(/*stuff....*/);
...
...
f.expectStatus(200);
f.toss();
如果端点只有一个预期状态,这可以正常工作,但在某些情况下(例如 POST 端点)您可能会返回 201
或 200
如果资源已经存在。
在 frisby 中有什么方法可以检查几个可接受的响应状态代码吗?
您可以向 Firsby lib
添加额外的方法,方法是创建需要 xyz = require "./xyz"
的本地文件 xyz.coffee
,您可以在其中提供:
Frisby = Object.getPrototypeOf(frisby.create())
Frisby.expectStatuses = (statuses) ->
@current.expects.push =>
expect(statuses).toContain(@current.response.status)
return this
最终您总是可以将上面的内容复制粘贴到您的 spec.coffee
文件中
毕竟,只需在您的脚本中使用:
.expectStatuses([200, 201])
它完美地完成了工作。
好的,找到了一种使用 after()
和本机 jasmine 匹配功能的简单方法。
大意是因为Frisby是异步的,你需要在它被抛出并被捕获后检查结果。在原始结果中,您可以根据正则表达式手动验证状态代码,在本例中为 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();
我正在使用 frisby
v0.8.5 和 jasimine-node
。使用 frisby
可以断言预期的 return http 状态代码:
f = frisby.create(/*stuff....*/);
...
...
f.expectStatus(200);
f.toss();
如果端点只有一个预期状态,这可以正常工作,但在某些情况下(例如 POST 端点)您可能会返回 201
或 200
如果资源已经存在。
在 frisby 中有什么方法可以检查几个可接受的响应状态代码吗?
您可以向 Firsby lib
添加额外的方法,方法是创建需要 xyz = require "./xyz"
的本地文件 xyz.coffee
,您可以在其中提供:
Frisby = Object.getPrototypeOf(frisby.create())
Frisby.expectStatuses = (statuses) ->
@current.expects.push =>
expect(statuses).toContain(@current.response.status)
return this
最终您总是可以将上面的内容复制粘贴到您的 spec.coffee
文件中
毕竟,只需在您的脚本中使用:
.expectStatuses([200, 201])
它完美地完成了工作。
好的,找到了一种使用 after()
和本机 jasmine 匹配功能的简单方法。
大意是因为Frisby是异步的,你需要在它被抛出并被捕获后检查结果。在原始结果中,您可以根据正则表达式手动验证状态代码,在本例中为 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();