javascript - 使用 Jest 的 test.each 参数化测试变量作用域

标签 javascript jestjs

如果我有这样的规范文件:

let a;
beforeEach(() => {
   a = 'hello';
})

describe('my test suite', () => {
    test.each([
        [a, 'hello']
    ])(
    'testing %s with expected result %s',
    (myVariable, expectedResult) => {
        expect(myVariable).toBe(expectedResult);
    })
});

我收到一个错误消息,指出参数化表中的 a 未定义。如果我使用常规的 test 方法,我可以访问 a

最佳答案

您确实忘记了 beforeEach() 行上的右括号。

let a;
beforeEach(() => {
   a = 'hello';
} );

您还有 i% 和 %1 用于整数,您需要字符串 (%s)。

只有一个测试,你不需要 beforeEach() 并且可以简单地做:

const a:string = 'hello';
test.each([[a, 'hello']])(
    '.compare(%s, %s)',
    (myVariable, expected) => {
        expect(myVariable).toBe(expected);
    },
);

但是,我也无法让它工作。我可以直接在测试中引用变量,比如:

const a:string = 'hello';
test.each([[a, 'hello']])(
    '.compare(%s, %s)',
    (myVariable, expected) => {
        expect(a).toBe(expected);
    },
);

使用您的 myVariable 不会从测试的闭环内部获取值。文字确实有效。 beforeEach 会破坏在那里设置值的目的,因为它不需要在 test.each() 中间更改,因为这意味着用不同的数据运行相同的测试。你仍然可以在你的 beforeEach 中创建对象和其他需要的东西,并直接引用它们(我的一个变量),但是每次运行都会改变的测试数据似乎并没有从外部循环中获取值。

关于javascript - 使用 Jest 的 test.each 参数化测试变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996062/

相关文章:

unit-testing - 如何在 React Jest 测试中获取 "mock"navigator.geolocation

php - 用于网站实现的网络摄像头图像流

javascript - JQuery 更改输入字段

javascript - 使用 Jest 进行测试时 Hook 调用无效 - native react

node.js - 尝试在 node_modules 中查找类型定义时 Jest 失败

typescript - jest-mock-extended - 使用对象输入调用模拟 [Typescript]

angular - Jest 遇到意外 token - 导入 (Angular CLI 6)

javascript - 在远程加载的 javascript 中使用 document.write 写出内容——为什么是个坏主意?

javascript - 如何使用浏览器历史记录状态在我的单页 JavaScript 应用程序中加载 URL?

javascript - 谷歌地图错误 : Uncaught InvalidValueError: setIcon: not a string; and no url property; and no path property