我试图在测试运行之前从外部源加载示例用例。以下操作失败,错误为``.each must be called with an Array or Tagged Template Literal. Instead was called with: undefined
。为什么beforeAll
在测试之前不执行?
let samples: string[];
beforeAll(() => {
samples = ["first sample foo", "second foo sample"];
});
describe(`Test Samples`, () => {
test.each(samples)("should include foo", (sample) => {
// NEVER GETS HERE
expect(sample.includes("foo")).toBe(true);
});
});
您可能会问为什么不加载describe
之前的样本。我从异步源加载示例,describe
不支持async
修饰符。
2条答案
按热度按时间6kkfgxo01#
故障排除#定义测试
测试必须同步定义,Jest才能收集测试。
这意味着当您使用
test.each
时,不能在beforeEach
/beforeAll
中异步设置表测试结果:
kadbb4592#
post可以帮助您。
简而言之,问题是在
beforeAll
中获取数据没有帮助,因为测试是在实际运行之前定义的。因此,beforeAll
将在定义测试之后运行。这意味着注册测试时samples
数组为空。