【问题标题】:Why Chai assertion are not run while ava are?为什么 Chai 断言没有运行而 ava 运行?
【发布时间】:2017-08-09 15:11:14
【问题描述】:

我正处于测试 Slack 机器人句柄的红色阶段,所以我预计会出现错误。

我有以下代码:

  generateHandler({ fetch }) {
    return async function(bot, message) {
      let status;
      try {
        let response = await fetch(endpoint, {
          method: 'POST',
          body: {build_parameters: { ALLOW_OVERWRITE: "true" }}
        });
        status = response.ok;
      } catch (error) {
        status = false;
      }
      return status;
    }
  }

我写了以下测试:

import test from 'ava';
import { expect } from 'chai';
const { generateHandler } = require('../lib/handlers/redeploy_master.js');


test('triggers a new build on circleci', async (t) => {
  const fetch = async (endpoint, { method, body }) => {
    const expectedBody = { build_parameters: { ALLOW_OVERWRITE: "true" } };
    expect(method).to.be('POST');
    expect(body).to.deep.equal(JSON.stringify(expectedBody));
    return Promise.resolve({ok: true});
  };
  const handler = generateHandler({fetch});
  const bot = {reply: () => {}};

  return await handler(bot, undefined);
});

预期行为

如果我用原生 ava 替换 expect() 断言:

t.true(endpoint.startsWith('http'));
t.is(method, 'POST');
t.deepEqual(body, JSON.stringify(expectedBody));

它抛出了我期望的错误:

   10:     t.is(method, 'POST');
   11:     t.deepEqual(body, JSON.stringify(expectedBody));
   12:     expect(method).to.be('POST');

  Difference:

  - {
  -   build_parameters: Object { … },
  - }
  + '{"build_parameters":{"ALLOW_OVERWRITE":"true"}}'

实际行为

我收到以下错误:

Test finished without running any assertions

使用assert 给出相同的行为

问题

假设chai 断言被捕获在我的try…catch 子句中而来自ava 的断言不是正确的吗?

【问题讨论】:

    标签: try-catch chai assertion ava


    【解决方案1】:

    AVA 的断言实际上并没有抛出异常,而是直接改变了测试结果。您可以让 AVA 与 Chai 一起工作,但您必须确保在测试期间不会捕获 Chai 异常。

    此外,如果 AVA 没有运行任何内置断言,则默认情况下它会通过测试失败。您可以通过设置failWithoutAssertions 选项来禁用此功能,请参阅https://github.com/avajs/ava/#custom-assertions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多