GraphQL模式测试:从模式到对象类型

时间:2018-12-09 21:19:17

标签: typescript testing mocha graphql chai

如果特定的字段位于我的ObjectType上,我想对GraphQLSchema进行非常基本的测试。

我拥有以下TypeDefs。

export const categoryTypeDefs = `
  type Category {
    _id: ID!
    name: String!
  } ... ` 

当前测试看起来像这样。

describe('Category Schema', () => {
        const categorySchema = graphql.buildSchema(categoryTypeDefs)
        it('Should have an Category field of type String', () => {
            expect(categorySchema.getTypeMap).to.have.property("name");
        })
    })

现在我的问题是,是否有可能从我的模式中获取Category的ObjectType并访问方法“ .getFields()”。最后,我要进行测试。

expect(categoryType.getFields()).to.have.property('name');
expect(categoryType.getFields().name.type).to.deep.equals(graphql.GraphQLString);

1 个答案:

答案 0 :(得分:0)

好的,然后解决方案比我预期的要容易。我们只需要将TypeType中getType的返回值转换为GraphQLObjectType。

所以只要有人遇到相同的问题。

describe('Category Schema', () => {
    it('Should have an Name field of type String', () => {
        let testType = schema.getType('Category') as GraphQLObjectType;

        expect(testType.getFields()).to.have.property("name");
        expect(testType.getFields().name.type).to.deep.equals(GraphQLString)
    })
})