代码之家  ›  专栏  ›  技术社区  ›  rap-2-h

jest:从测试返回值

  •  0
  • rap-2-h  · 技术社区  · 6 年前

    我想买 result 在另一个测试(下一个测试)中使用jest的测试的(返回值)。有办法吗?

    我试图返回一个值,但现在不知道如何捕捉它并将其影响到常量或变量。

    test('a', () => {
      expect(1).toBe(1)
      return 'ok'
    })
    
    test('b', () => {
      // I want to use the value returned by the first test: "ok"
    })
    

    我知道我可以使用“全局”变量,但我觉得它有点粗糙。

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Adelin    6 年前

    对于单个执行,可以有一个存储执行信息的顶级对象,该对象在 afterAll 方法。

    这里是一个虚拟的测试套件,它突出了我的意思。当然,你可以获得创造性和更有组织性,甚至在更高的层次上拥有对象。

    然后您可以将它们存储在一个文件中,将结果发送到服务器等。

    测试.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));
      });
    });