JestJS测试同步代码显示异步行为

时间:2017-10-22 08:15:27

标签: jestjs

我是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已经拥有其后的作业中的新值。这是为什么?我的代码是完全同步的,所以我希望第一个测试通过,然后是它后面的代码的效果。

1 个答案:

答案 0 :(得分:0)

原因bin存在于两个测试的范围内。但主要问题是所有在testdescribeit块之一之外编写的代码会立即被调用。让我们看一下test调用的样子:

test('testname', testFunction)

这意味着测试被添加到具有名称和功能的测试套件中,但这并不意味着立即调用testFunction。如果它会像这样工作beforeEach块不起作用。首先,测试套件会收集所有不同的testdescribeit调用,然后运行它们。如果现在在测试之外的较高范围中创建变量,则它将具有分配给last的值。在您的情况下{bool b;}

相关问题