如何解决用Jest模拟带有嵌套函数的模块
我有一个像下面这样嘲笑的模块,我想更改每个测试的create返回值。
jest.mock('UserModule',() => {
return {
User: jest.fn().mockImplementation(() => {
return {
profile: {
create: jest.fn().mockImplementation(() =>
Promise.resolve({
json: () => Promise.resolve({ test: 'ok' }),ok: true,})
),},}
}),}
})
这将被称为new UserModule.User()
,并在其上调用profile.create()
。
如何做到这一点,以便可以在每次测试时即时切换create实现?如果我在describe
以外声明它,则该方法适用于一个测试,并且不确定如何在内部动态切换它。
我尝试将整个模拟程序放入每个测试中,但这没有用,在这种情况下,似乎好像根本没有模拟该函数。
it('Should return true is response is ok',async () => {
const response = await call('1234')
})
注意:我上面的调用函数会导入UserModule并进行调用
let userLib = new UserModule.User()
let response = await userLib.profile.create()
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。