繁体   English   中英

如果 jest.js 中没有抛出错误,如何使测试失败?

[英]How to fail a test if no error is thrown in jest.js?

我目前正在改进我们的feathers.js/node.js api 的分支/功能覆盖率(使用jest进行测试)。 目前有一个服务的属性应该只接受某些值,但尚未实现。

有效值类似于:

const validValues = ["System", "Engineering", "Production"]

如果提供了其中一个值,则 api 应接受请求并返回有效响应。

如果一个值像

const invalidValue = ["Some", "Invalid", "Value"]

已提供,API 应拒绝该请求。

由于尚未实现值验证,因此想法是实现一个测试,如果 api 接受的无效值(如无效值)则失败,并确保 api 只接受有效值。

it("test service for invalid values", async () => {
    const invalidValues = ["Some", "Invalid", "Value"];

    invalidValues.map(async (invalidValue) => {
      await expect(async () => {
        await app.service("release-types").create({
          someProperty: "some Value"
          propertyWithValueConstraint: invalidValue,
        });
      }).rejects.toThrow();
    });
  });

问题是[].map不会异步运行,因此不会捕获断言。 你有两个选择:

  1. 使用await Promise.all(promises)
it("test service for invalid values", async () => {
  const invalidValues = ["Some", "Invalid", "Value"];

  await Promise.all(invalidValues.map(async (invalidValue) => {
    await expect(async () => {
      await app.service("release-types").create({
        someProperty: "some Value"
        propertyWithValueConstraint: invalidValue,
      });
    }).rejects.toThrow();
  }));
});
  1. 使用for ... of 循环
it("test service for invalid values", async () => {
  const invalidValues = ["Some", "Invalid", "Value"];

  for (const invalidValue of invalidValues) {
    await expect(async () => {
      await app.service("release-types").create({
        someProperty: "some Value"
        propertyWithValueConstraint: invalidValue,
      });
    }).rejects.toThrow();
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM