Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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 开玩笑+;React测试库:如何模拟某个库中只影响一个测试块的方法_Javascript_Reactjs_Unit Testing_Jestjs_React Testing Library - Fatal编程技术网

Javascript 开玩笑+;React测试库:如何模拟某个库中只影响一个测试块的方法

Javascript 开玩笑+;React测试库:如何模拟某个库中只影响一个测试块的方法,javascript,reactjs,unit-testing,jestjs,react-testing-library,Javascript,Reactjs,Unit Testing,Jestjs,React Testing Library,使用Jest模拟来自第三方库的方法的问题。所以我有一个这样实现的组件 从'bar'导入{foo} 函数组件(){ //在组件中的某个地方使用foo } 在测试中,我试图模仿foo,所以 从'bar'导入{foo} 开玩笑的模仿(“酒吧”) 测试('test',()=>{ foo.mockReturnValue(…) }) 这很好,但一旦我将jest.mock('bar')移动到每个test块中,jest就会报告一个错误,说foo.mockReturnValue不是函数。像这样 test('t

使用Jest模拟来自第三方库的方法的问题。所以我有一个这样实现的组件

从'bar'导入{foo}
函数组件(){
//在组件中的某个地方使用foo
}
在测试中,我试图模仿foo,所以

从'bar'导入{foo}
开玩笑的模仿(“酒吧”)
测试('test',()=>{
foo.mockReturnValue(…)
})
这很好,但一旦我将
jest.mock('bar')
移动到每个
test
块中,jest就会报告一个错误,说
foo.mockReturnValue
不是函数。像这样

test('test',()=>{
开玩笑的模仿(“酒吧”)

foo.mockReturnValue(…)/因为您希望在每个测试级别模拟
foo
,所以在每个测试运行之前或之后,保持
bar
全局模拟并使用
beforeach()
afterEach()
重置模拟函数更有意义

import {foo} from 'bar';

jest.mock('bar');

afterEach(() => {
  foo.mockReset();
})

test('test', () => {
 foo.mockReturnValue(...);
})
您需要使用
.mockReset()
foo
中删除模拟实现和返回值;或者,如果
foo
的实现和返回值在每个测试中保持不变,则可以使用
.mockClear()
。请阅读有关差异的更多信息