【问题标题】:JestJS testing synchronous code shows asynchronous behaviorJestJS 测试同步代码显示异步行为
【发布时间】:2017-10-23 20:17:14
【问题描述】:

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

【问题讨论】:

    标签: jestjs


    【解决方案1】:

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

    test('testname', testFunction)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多