【问题标题】:Testing: mocking multiple status code responses测试:模拟多个状态码响应
【发布时间】:2023-03-14 03:18:01
【问题描述】:

我正在测试我的 http 响应。

我想写一个测试,说明 200 到 300 之间的任何状态都是有效的,而其他任何状态都是无效的。

但是要测试状态码,我必须首先创建一个模拟响应,如下所示:

before(() => {
   mockResponse = new window.Response(JSON.stringify(mockResponseData), {
      status: 200,
      headers: {
        'Content-type': 'application/json'
      }
    })
   fetchMock.post('/myurl',mockResponse)
})

it('Should ...')

请注意,我直接设置了状态。因此,在创建模拟测试时,我必须设置一个状态。如何测试一系列状态?

【问题讨论】:

    标签: mocha.js sinon chai


    【解决方案1】:

    你可以做类似的事情来测试每个案例:

    describe('http tests', function () {
    
      var codes = [];
      for(var code = 200; code < 300; code++){
        codes.push(code);
      }
    
      codes.forEach(function(code){
        it(`should responds with a ${code} status`, function () {
    
          mockResponse = new window.Response(JSON.stringify(mockResponseData), {
             status: code,
             headers: {
               'Content-type': 'application/json'
             }
           })
          fetchMock.post('/myurl',mockResponse)
    
          //test code
        });
      });
    });
    

    【讨论】:

    • 希望不必这样做,但我想这是唯一的解决方案。
    • 您也可以使用类似机会的 lib 或简单的随机数来生成 200 到 300 之间的数字。但它无法重现:/
    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多