开玩笑:从测试中返回一个值

时间:2018-07-12 08:26:40

标签: javascript node.js unit-testing jestjs

我想用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。

是否有一种方法可以获取测试回调的返回值,以便在另一个测试中使用它?

1 个答案:

答案 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));
  });
});