我正在尝试模拟单元测试的graphql突变。我使用的是MockedProvider,但收到错误消息:“ UnhandledPromiseRejectionWarning:错误:查询没有更多模拟的响应:突变LoginMutation”
我做了很多谷歌搜索,然后将所有内容复制粘贴到一个文件中,这样导入就不会有问题了
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
token
user {
name
}
}
}
`;
const mocks = [
{
request: {
query: LOGIN_MUTATION,
variables: { email: 'test@test.com', password: 'password' },
},
result: {
data: {
login: {
token: 'fakeToken',
user: {
name: 'Testy McTestface'
}
}
}
}
}
]
describe('LoginForm', () => {
let wrapper;
let store;
beforeEach(() => {
store = mockStore(initialState);
});
it('triggers the doLogin action creator after the graphql call', () => {
const mockDoLogin = jest.fn()
let mockedWrapper = mount(
<MockedProvider mocks={mocks} addTypename={false}>
<Provider store={store}>
<LoginForm doLogin={mockDoLogin} />
</Provider>
</MockedProvider>,
);
mockedWrapper.find('#loginButton').simulate('click')
expect(mockDoLogin).toHaveBeenCalledTimes(1)
})
});
我希望该测试通过(包装器上搜索的标签是正确的),但是我遇到了上述错误,所以我假设问题出在我的模拟游戏上,但对我来说看起来不错?>
对不起,如果这很荒谬,但我已经盯着它看了几个小时。
答案 0 :(得分:1)
您想给easygraphql-tester开枪吗?它会为您模拟查询,但是,如果您想设置一些灯具,也可以设置它们!
您可以通过模式以使用它!
import EasyGraphQLTester from 'easygraphql-tester'
const tester = new EasyGraphQLTester(schema)
const LOGIN_MUTATION = gql`
mutation LoginMutation($email: String!, $password: String!) {
login(email: $email, password: $password) {
token
user {
name
}
}
}
`;
const mocks = [
{
request: {
query: LOGIN_MUTATION,
variables: { email: 'test@test.com', password: 'password' },
},
result: tester.mock({
query: LOGIN_MUTATION,
variables: { email: 'test@test.com', password: 'password' }
})
}
]