Jestjs Mock.mockImplementation()不工作
我有一个服务班 Service.jsJestjs Mock.mockImplementation()不工作,jestjs,Jestjs,我有一个服务班 Service.js class Service { } export default new Service(); 我正试图为此提供一个模拟实现。如果我使用这样的东西: jest.mock('./Service', () => { ... my mock stuff }); 它工作正常,但是我无法访问在mock之外声明的任何变量,这有点限制,因为我想重新配置mock返回的内容,等等 我尝试了这个(受另一篇StackOverflow文章的启发:) 不幸的是,当我尝试运行
class Service {
}
export default new Service();
我正试图为此提供一个模拟实现。如果我使用这样的东西:
jest.mock('./Service', () => { ... my mock stuff });
它工作正常,但是我无法访问在mock之外声明的任何变量,这有点限制,因为我想重新配置mock返回的内容,等等
我尝试了这个(受另一篇StackOverflow文章的启发:)
不幸的是,当我尝试运行此程序时,我遇到以下错误:
TypeError: _Service2.default.mockImplementation is not a function
嘲笑等于开玩笑。您需要调用jest.fn来创建模拟函数 因此:
jest.mock('./Service', () => jest.fn);
应该是:
jest.mock('./Service', () => jest.fn());
您需要将模拟组件存储在一个名称前缀为“mock”的变量中,并确保在从“main.js”文件中的默认属性导入服务时返回一个带有默认属性的对象
我和@Janos有同样的问题,其他答案也没有帮助。你可以做两件事:
从“/service”导入服务;
jest.mock('./服务',()=>jest.fn());
service.yourFunction=jest.fn(()=>{/*您的mock*/})
constmyobj={foo:bar}
const myFunction1=jest.fn(()=>{return Promise.resolve(myObj)})
常量myFunction2=。。。
module.exports={
我的职能1,
我的职能2
}
然后在测试文件中添加:
jest.mock('./javascript/utils/service')
…从mockfile导出的函数将在测试文件执行过程中命中
遇到了类似的问题,并通过使用.mockImplementationOnce解决了它
jest.mock('./Service', () => jest.fn()
.mockImplementationOnce(() => {
return { ... mock stuff }
})
.mockImplementationOnce(() => {
return { ... mock other stuff }
})
);
现在,当您运行另一个测试时,它将返回第二个模拟对象。我有类似的问题,原因是“.spec.js”文件有一个
import jest from "jest-mock";
删除这一行后,它工作了。这是一个React本机项目(使用create React本机应用程序(又名expo)设置),Jest是20.0.4。节点:7.2.0,Npm:5.3.0这也不起作用。在本例中,service.mockImplementation甚至不存在。这不起作用,询问者明确提到它不起作用。这是问题的实际答案。投票最多不能解决的问题不是功能问题。
jest.mock('./Service', () => jest.fn()
.mockImplementationOnce(() => {
return { ... mock stuff }
})
.mockImplementationOnce(() => {
return { ... mock other stuff }
})
);
import jest from "jest-mock";