在TypeScript项目中使用jest和PhpStorm编写测试时,我遇到了一种非常奇怪的行为。
我做了一个简单的例子来说明这个问题:

为了解释发生了什么事:
我运行了3次测试:
mutated在这一点上仍然应该是false。所以这里的重点不是讨论在一个吸气剂中发生突变是好的还是坏的。
问题在于,当调试器处于活动状态时,为什么第15行在第14行之前执行?
我将代码放在下面,这样您就可以更容易地阅读它:
class Foo {
public mutated: boolean = false;
public get getMe(): string {
this.mutated = true;
return 'me';
}
}
test('state of mutated', () => {
const foo = new Foo();
expect(foo.mutated).toEqual(false);
expect(foo.getMe).toEqual('me');
expect(foo.mutated).toEqual(true);
});谢谢你的帮助。
发布于 2021-10-10 16:23:42
这不是执行顺序的问题--调用是按照正确的顺序执行的。这是另一个不同的问题:使用启用变量中的自动表达式,在设置中启用,执行,Deployment颇具数据视图,调试器尝试计算表达式,以便在命中断点时计算变量值。因此,它评估foo.getMe --结果,foo.mutated变成了true,测试失败了。
我不确定这是否可以被视为一个bug或预期的行为。我只能建议在处理类似于您的代码时禁用此选项。
https://stackoverflow.com/questions/69508984
复制相似问题