Sim*_*ker 31 javascript reactjs jestjs
我是 JEST 的新手,目前正在测试一个 Javascript 组件,该组件在其 onComponentDidMount 中进行 API 调用。根据 ajax 调用(api 调用)的返回数据,我的组件要么显示一个表格,要么显示一个简单的文本。
我的 JEST 测试相当简单,目前我只是测试以匹配当前的快照。因此,由于我的 api 调用可以返回不同的数据,因此我的快照可以有两个不同的方面:1) 一个带有表格 2) 一个带有简单的文本。
我成功地嘲笑了这样的服务
jest.mock("/myService", () => ({
index: (data, callback) => {
const return = [
{
{...}
},
]
callback(return)
},
}))
Run Code Online (Sandbox Code Playgroud)
我的组件myService.index()正确地进行了调用,我希望向它传递不同的值,这些值将用于进行回调。
这是它的样子
it("has proper snapshot", () => {
const props = {...}
const component = shallow(<MyComponent {...props} />)
expect(component).toMatchSnapshot()
})
Run Code Online (Sandbox Code Playgroud)
这对第一个例子很有用,但我似乎找不到适合我的正确答案。你能帮助我吗 ?:)
klu*_*gjo 65
1- 如果您希望模拟在每次调用时返回不同的结果:
使用模拟返回值一次
myMock
.mockReturnValueOnce(10)
.mockReturnValueOnce('x')
.mockReturnValue(true);
Run Code Online (Sandbox Code Playgroud)
将10在第一次通话、'x'第二次通话以及true之后的任何时间返回。
2-如果您想检查模拟已被调用的参数:
expect(mock).toHaveBeenNthCalledWith(1, '1st call args');
expect(mock).toHaveBeenNthCalledWith(2, '2nd call arg 1', '2nd call arg 2');
Run Code Online (Sandbox Code Playgroud)
会断言
在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')
3- 如果您想要基于函数参数的特定响应
jest 默认不支持它,但您可以查看jest-when,它允许您执行以下操作:
when(fn).calledWith(1).mockReturnValue('yay!')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19617 次 |
| 最近记录: |