首页 文章

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

提问于
浏览
0

我正在使用 frisby v0.8.5和 jasimine-node . 使用 frisby ,以下内容断言预期返回http状态代码:

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

如果 endpoints 具有单个预期状态,则此方法可以正常工作,但在某些情况下(如POST endpoints ),如果资源已存在,则可能会返回 201 for created或 200 .

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

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();
    
  • 0

    您可以通过创建本地文件 xyz.coffeeFirsby lib 添加额外的方法,您可以在那里提供 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])
    

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

相关问题