Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理影响Jest中其他测试的全局对象/测试_Javascript_Unit Testing_Jestjs - Fatal编程技术网

Javascript 如何处理影响Jest中其他测试的全局对象/测试

Javascript 如何处理影响Jest中其他测试的全局对象/测试,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,我在React原生项目中的一些测试会影响全局对象。这些更改通常会影响依赖于相同对象的其他测试 例如:一个测试检查是否正确添加了侦听器,第二个测试检查是否正确删除了侦听器: /\uuuuuu测试/ExampleClass.js 描述(“示例类”,()=>{ 它(“应该添加侦听器”,()=>{ 例如class.addListener(jest.fn()); 例如class.addListener(jest.fn()); expect(例如class.listeners.length).toBe(2)

我在React原生项目中的一些测试会影响全局对象。这些更改通常会影响依赖于相同对象的其他测试

例如:一个测试检查是否正确添加了侦听器,第二个测试检查是否正确删除了侦听器:

/\uuuuuu测试/ExampleClass.js
描述(“示例类”,()=>{
它(“应该添加侦听器”,()=>{
例如class.addListener(jest.fn());
例如class.addListener(jest.fn());
expect(例如class.listeners.length).toBe(2);
});
它(“应该删除侦听器”,()=>{
const fn1=jest.fn();
const fn2=jest.fn();
示例class.addListener(fn1);
示例class.addListener(fn2);
expect(例如class.listeners.length).toBe(2);
示例类RemovelListener(fn1);
expect(ExampleClass.listeners.length).toBe(1);
示例类RemovelListener(fn2);
expect(ExampleClass.listeners.length).toBe(0);
});
});
第二个测试本身可以正常运行,但在运行所有测试时失败,因为第一个测试没有清理ExampleClass。在每次测试中,我总是需要手动清理类似的东西吗

看来我不明白这个范围是如何运作的。。。我假设每个测试都将在一个新的环境中运行。有关于这方面的文件吗


其他示例包括模拟外部库并检查其中模拟的函数是否被正确调用,或者将
Platform.OS
覆盖到ios或android以测试特定于平台的实现。

据我所知,测试的范围始终是测试文件。现在,我将代码更改为在每次回调之前有一个
,该回调主要调用
jest.resetAllMocks()
并将
Platform.OS
重置为其默认值

快速和沙盒

Jest将测试运行并行化,以最大限度地提高性能。控制台消息被缓冲并与测试结果一起打印。沙盒测试文件和自动全局状态为每个测试重置,因此没有两个测试相互冲突


就我所见,测试的范围始终是测试文件。现在,我将代码更改为在每次
回调之前有一个
,该回调主要调用
jest.resetAllMocks()
并将
Platform.OS
重置为其默认值

快速和沙盒

Jest将测试运行并行化,以最大限度地提高性能。控制台消息被缓冲并与测试结果一起打印。沙盒测试文件和自动全局状态为每个测试重置,因此没有两个测试相互冲突