Javascript Jest使用不同的参数模拟同一函数两次
我不熟悉JEST,目前正在测试一个Javascript组件,该组件在其onComponentDidMount中进行API调用。根据ajax调用(api调用)的返回数据,我的组件显示一个表或一个简单的文本 我的JEST测试相当简单,因为现在我只测试匹配当前快照。因此,由于我的api调用可以返回不同的数据,我的快照可以有两个不同的方面:1)一个是表2)一个是简单的文本 我成功地模仿了这种服务Javascript Jest使用不同的参数模拟同一函数两次,javascript,reactjs,jestjs,Javascript,Reactjs,Jestjs,我不熟悉JEST,目前正在测试一个Javascript组件,该组件在其onComponentDidMount中进行API调用。根据ajax调用(api调用)的返回数据,我的组件显示一个表或一个简单的文本 我的JEST测试相当简单,因为现在我只测试匹配当前快照。因此,由于我的api调用可以返回不同的数据,我的快照可以有两个不同的方面:1)一个是表2)一个是简单的文本 我成功地模仿了这种服务 jest.mock("/myService", () => ({ index: (data, ca
jest.mock("/myService", () => ({
index: (data, callback) => {
const return = [
{
{...}
},
]
callback(return)
},
}))
我的组件正确地执行了myService.index()
调用,我希望传递给它不同的值,它将使用这些值进行回调
下面是它的外观
it("has proper snapshot", () => {
const props = {...}
const component = shallow(<MyComponent {...props} />)
expect(component).toMatchSnapshot()
})
it(“有正确的快照”,()=>{
const props={…}
常量分量=浅()
expect(component.toMatchSnapshot())
})
这对于第一个例子很有效,但我似乎找不到适合我的正确答案。你能帮我吗?:) 请在这上面查看。模拟函数时可以返回不同的值,一次返回所需的值,然后返回不同的值。1-如果希望模拟在每次调用时返回不同的结果: 使用 将在第一次呼叫时返回
10
,在第二次呼叫时返回'x'
,并在之后的任何时间返回true
2-如果要检查调用模拟的参数:
使用
将断言
是在第一次调用时使用mock
调用的->'1st call args'
mock('1st call args')
在第二次调用时使用mock
和'2nd call arg 1'
调用它->'2nd call arg 2'
mock('2nd call arg 1','2nd call arg 2')
when(fn).calledWith(1).mockReturnValue('yay!')
好了,这已经帮了大忙了。但是,如何将值传递给这个模拟呢?基本上,我想在一种情况下传递给它,
{a:1,b:2}
,在另一种情况下传递给它,{}
我不知道tobeenthcalledWith,它看起来很实用,谢谢伙计!要是这些笑话文件能如此有用和简洁就好了。非常感谢。
expect(mock).toHaveBeenNthCalledWith(1, '1st call args');
expect(mock).toHaveBeenNthCalledWith(2, '2nd call arg 1', '2nd call arg 2');
when(fn).calledWith(1).mockReturnValue('yay!')