Django石墨烯突变在单元测试中返回Bad Request

时间:2020-09-02 07:09:04

标签: django graphql graphene-django

我已经定义了以下graphql模式来创建非活动用户

from .models import User, UserManager

import graphene
from graphene_django import DjangoObjectType


class UserType(DjangoObjectType):
    class Meta:
        model = User


class PreSignupInput(graphene.InputObjectType):
    email = graphene.String(required=True)
    terms_of_use = graphene.Boolean(required=True)


class PreSignup(graphene.Mutation):
    class Arguments:
        pre_signup_data = PreSignupInput(required=False)

    user = graphene.Field(UserType)

    def mutate(self, info, user_data=None):
        user = UserManager().create_inactive_user_with_email(user_data.email, user_data.terms_of_use)

        return PreSignup(user=user)


class Mutation(graphene.ObjectType):
    pre_signup = PreSignup.Field()

User 类在配置中也定义为AUTH_USER_MODEL, create_inactive_user_with_email 创建User的实例,将其保存到数据库并返回。

每当我运行以下测试时:

from graphene_django.utils.testing import GraphQLTestCase


class UserSchemaTest(GraphQLTestCase):
    def test_create_inactive_user(self):
        response = self.query(
            '''
            mutation preSignup($input: PreSignupInput!) {
                preSignup(input: $input) {
                    user {
                        id
                        email
                    }
                }
            }
            ''',
            op_name='preSignup',
            input_data={'email': 'test@example.com', 'terms_of_use': True}
        )

        print(response.json())

        self.assertResponseNoErrors(response)

它失败,并出现Bad Request错误和以下错误消息:

{
    'errors': [
        {'message': 'Unknown argument "input" on field "preSignup" of type "Mutation".',
         'locations': [{'line': 3, 'column': 27}]}]
}

我有什么想念的吗?我用this tutorial做测试。

谢谢!

0 个答案:

没有答案