raj*_*ddy 5 reactjs graphql apollo-client react-testing-library
这是我使用 MockedProvider 的方式。如何在模拟数组中模拟重新获取?
const mocks = [{
request: {
query: GET_USERS_BY_FACILITY,
variables: {
facility: 300
}
},
result: {
data: {
GetUsersByFacility: [{
nuId: 'Q916983',
userName: faker.internet.userName(),
profileKey: 'testKey',
profileValue: 'testValue',
__typename: 'FacilityUser'
}]
}
},
refetch: () => {
return {
data: {
GetUsersByFacility: [{
nuId: 'Q916983',
userName: faker.internet.userName(),
profileKey: 'testKey',
profileValue: 'testValue',
__typename: 'FacilityUser'
}]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该测试用例在触发删除事件时调用 refetch 函数。
it('should be able to click on delete user', async () => {
const {getByTestId} = render(
<MockedProvider mocks={mocks}>
<Users selectedFacility={300}/>
</MockedProvider>)
await wait(0)
fireEvent.click(getByTestId('btnDelete'))
})
Run Code Online (Sandbox Code Playgroud)
我一直在尝试不同的方法,似乎没有一个有效。我收到错误消息TypeError: Cannot read property 'refetch' of undefined。
非常感谢,希望得到答复。
问候,--拉贾尼
小智 3
也许现在回答有点晚了,但是如果你还没有得到答案,可以参考我的解决方法。
请注意,这可能不是正确的答案。
const mocks = [
{
request: {
query: GET_DOG_QUERY,
variables: {
name: 'Buck',
},
},
result: () => {
// do something, such as recording that this function has been called
// ...
return {
data: {
dog: { id: '1', name: 'Buck', breed: 'bulldog' },
},
}
},
},
];
Run Code Online (Sandbox Code Playgroud)
// do something, such as recording that this function has been called这是我的模拟示例。
const mocks = [
{
request: {
query: GET_DOG_QUERY,
variables: {
name: 'Buck',
},
},
result: () => {
// do something, such as recording that this function has been called
// ...
return {
data: {
dog: { id: '1', name: 'Buck', breed: 'bulldog' },
},
}
},
},
];
Run Code Online (Sandbox Code Playgroud)
queryCalled是false这样,它重新分配queryCalled为true并返回“第一次获取的”模拟数据,我的测试代码示例在这里
let queryCalled = false
const testingData = (value) => ({
data: {....}
})
const TESTING_MOCK = {
request: {
query: TESTING_QUERY,
variables: { some: "variables" },
},
result: () => {
if (queryCalled) return testingData("refetched");
else {
queryCalled = true;
return testingData("first fetched");
}
},
};
Run Code Online (Sandbox Code Playgroud)
如果您还有其他建议,请告诉我!
| 归档时间: |
|
| 查看次数: |
8468 次 |
| 最近记录: |