预期将调用一个断言,但收到零个断言调用

ALB*_*LBI 2 javascript unit-testing promise es6-promise jestjs

我正在尝试使用Jest测试方法...该方法应返回Promise.reject()。

这是我写的代码:

test('testing Invalid Response Type', () => {       
        const client = new DataClient();

        client.getSomeData().then(response => {
            console.log("We got data: "+ response);
        }).catch(e => {
            console.log("in catch");
            expect(e).toBeInstanceOf(IncorrectResponseTypeError);

        });
        expect.assertions(1);

  });
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,它会打印“ in catch”,但由于以下异常而失败: 预期将调用一个断言,但收到零个断言调用。

console.log src/data/dataclient.test.js:25
      in catch

  ? testing Invalid Response Type

    expect.assertions(1)

    Expected one assertion to be called but received zero assertion calls.

      at extractExpectedAssertionsErrors (node_modules/expect/build/extract_expected_assertions_errors.js:37:19)
          at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)
Run Code Online (Sandbox Code Playgroud)

ALB*_*LBI 5

我通过在块之前添加return语句来解决它。使用return语句,该函数将等待catch块完成..因此将执行期望。

test('testing Invalid Response Type', () => {       
    const client = new DataClient();
    return client.getSomeData().then(response => {
            console.log("We got data: "+ response);
        }).catch(e => {
            console.log("in catch");
            expect(e).toBeInstanceOf(IncorrectResponseTypeError);

        });
        expect.assertions(1);
   });
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用异步/等待怎么办? (4认同)
  • 您将在运行“expect.assertions(1);”之前返回。 (2认同)