我是JestJS的新手并尝试测试同步代码。以下测试顺利通过:
bin = new Compiler().compile('{int a = 42;}');
test('Integer constant declaration', function() {
expect(bin.dumpVariables()).toBe("[int const a = 42]\n");
});
但是,当我附加此代码时:
bin = new Compiler().compile('{bool b;}');
test('Another test', function() { ... }
...第一次测试失败,因为bin
已经拥有其后的作业中的新值。这是为什么?我的代码是完全同步的,所以我希望第一个测试通过,然后是它后面的代码的效果。
答案 0 :(得分:0)
原因bin
存在于两个测试的范围内。但主要问题是所有在test
,describe
,it
块之一之外编写的代码会立即被调用。让我们看一下test
调用的样子:
test('testname', testFunction)
这意味着测试被添加到具有名称和功能的测试套件中,但这并不意味着立即调用testFunction
。如果它会像这样工作beforeEach
块不起作用。首先,测试套件会收集所有不同的test
,describe
,it
调用,然后运行它们。如果现在在测试之外的较高范围中创建变量,则它将具有分配给last的值。在您的情况下{bool b;}