问题描述
我想用模拟提供程序测试apollo客户端,它通过简单的查询和变异即可正常工作。但是对于寄存器突变,我的响应类型为
register(data: $data) {
... on Error {
error {
path
message
}
}
... on RegisterSuccess {
user {
email
_id
username
}
}
}
我已通过以下方式用apollo客户端模拟了此响应
const mocks = [
{
request: {
query: RegisterMutation,variables: {
data: {
email: 'test',username: 'test',password: 'test',},result: {
data: {
register: {
error: [
{
path: 'email',message: 'Email already in use',],];
但这无法正常工作并给出错误消息,
Warning: An unhandled error was caught from submitForm() Error: No more mocked responses for the query: mutation Register($data: RegisterInput!) {
register(data: $data) {
... on Error {
error {
path
message
}
}
... on RegisterSuccess {
user {
email
_id
username
}
}
}
},variables: {"data":{"email":"","username":"","password":""}}
解决方法
实际上,我这边有一个小错误。我无法通过
{
email: 'test',username: 'test',password: 'test',}
此对象作为变量中的数据,因为组件期望所有三个都为空字符串。所以通过这个
{
email: '',username: '',password: '',}
为我解决了这个问题。 请参阅此github issue了解更多详细信息和示例