0

我正在使用frisbyv0.8.5 和jasimine-node. 对于frisby预期的返回 http 状态代码,有以下断言:

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

如果端点具有单一的预期状态,这很好用,但在某些情况下(如 POST 端点),如果资源已经存在,您可能会返回一个201for created 或 a 。200

frisby 有什么方法可以检查几个可接受的响应状态代码?

4

2 回答 2

0

好的,找到了一种使用after()原生茉莉花匹配功能的简单方法。

大意是因为 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();
于 2016-11-08T16:48:02.640 回答
0

您可以添加额外的方法Firsby lib,通过创建需要的本地文件xyz.coffeexyz = 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])

它完美地完成了这项工作。

于 2016-09-27T12:11:23.307 回答