我想用Jest在另一个测试(下一个测试)中获得测试的result
(返回值)。有办法吗?
我试图返回一个值,但是我现在不知道如何捕获它并将其影响为const或var。
test('a', () => {
expect(1).toBe(1)
return 'ok'
})
test('b', () => {
// I want to use the value returned by the first test: "ok"
})
我知道我可以使用“全局”变量,但是我觉得它有点hacky。
是否有一种方法可以获取测试回调的返回值,以便在另一个测试中使用它?
答案 0 :(得分:1)
对于单个执行,您可以具有一个存储执行信息的顶级对象,该信息可以通过afterAll
方法进行解析。
这里是一个虚拟测试套件,突出了我的意思。当然,您可以变得更有创意,更有条理,甚至可以在更高层次上拥有对象。
然后您可以将它们存储在文件中,将结果发送到服务器等。
test.js
describe('A suite', () => {
let suiteSpecificData = {};
test('a test', () => {
expect(1).toBe(1)
suiteSpecificData["a test"] = "ok"
})
test('another test', () => {
let theOtherTestData = suiteSpecificData["a test"];
let thisTestData = suiteSpecificData["another test"] = {};
if (theOtherTestData === "ok") {
thisTestData.messageOne = "All good with the other test";
thisTestData.someMoreRandomStuff = [1,2,3];
}
})
afterAll(() => {
console.log(JSON.stringify(suiteSpecificData));
});
});