2017-10-05 34 views
0

我试图嘲弄服务作为文档例如http://dev.apollodata.com/tools/graphql-tools/mocking.html#Default-mock-example嘲弄的服务和运行参数化查询反应阿波罗graphql

我出口我的架构与标准内省查询,建立一个模式对象,并使用该当试图运行文档中提到的查询时。

import * as introspectionResult from "../../graphql/schema.json" 
const GRAPHQL_QUERY = ` 
query eventsFeatured(
    $type: String!, 
    $entity_type: String, 
    $market__role: String, 
    $outcome__odds_rank_unique: Int, 
    $limit: Int 
) { 
    featured(
    type: $type, 
    entity_type: $entity_type, 
    market__role: $market__role, 
    outcome__odds_rank_unique: $outcome__odds_rank_unique, 
    limit: $limit 
) { 
    ...FeaturedFragment 
    media { 
     description 
     extralarge 
     large 
     medium 
     preview 
     __typename 
    } 
    event { 
     ...EventFragment 
     market { 
     ...MarketFragment 
     outcome { 
      ...OutcomeFragment 
      media_logo { 
      preview 
      small 
      __typename 
      } 
      bookie { 
      ...BookieFragment 
      __typename 
      } 
      __typename 
     } 
     __typename 
     } 
     article { 
     ...ArticleFragment 
     __typename 
     } 
     category3 { 
     ...AllCategoriesFragment 
     __typename 
     } 
     __typename 
    } 
    offer { 
     id 
     name 
     conditions 
     deeplink 
     domain { 
     ...EventFragment 
     __typename 
     } 
     __typename 
    } 
    __typename 
    } 
} 

fragment EventFragment on Event { 
    id 
    name 
    canonicalised_name 
    display_name 
    date 
    date_human 
    date_short 
    type 
    __typename 
} 

fragment MarketFragment on Market { 
    id 
    name 
    display_name 
    canonicalised_name 
    type 
    role { 
    name 
    __typename 
    } 
    __typename 
} 

fragment OutcomeFragment on Outcome { 
    id 
    name 
    display_name 
    canonicalised_name 
    odds 
    odds_decimal 
    odds_rank 
    deeplink 
    home_or_away 
    type 
    __typename 
} 

fragment BookieFragment on Bookie { 
    name 
    __typename 
} 

fragment ArticleFragment on BaseArticle { 
    title 
    body 
    excerpt 
    author 
    date_no_time 
    date_stamp 
    date_human 
    date_short 
    date 
    __typename 
} 

fragment AllCategoriesFragment on Category3 { 
    ...Category3Fragment 
    category2 { 
    ...Category2Fragment 
    category1 { 
     ...Category1Fragment 
     __typename 
    } 
    __typename 
    } 
    __typename 
} 

fragment Category1Fragment on Category1 { 
    name 
    canonicalised_name 
    __typename 
} 

fragment Category2Fragment on Category2 { 
    name 
    canonicalised_name 
    __typename 
} 

fragment Category3Fragment on Category3 { 
    name 
    canonicalised_name 
    __typename 
} 

fragment FeaturedFragment on Featured { 
    id 
    type 
    display_order 
    __typename 
} 
` 

// this builds our mock apollo schema 
const schema = buildClientSchema(introspectionResult) 
addMockFunctionsToSchema({ schema }) 

// execute the supplied apollo query 
    graphql(schema, GRAPHQL_QUERY, { 
     options: (props) => ({ 
     variables: { 
      type: "IMAGEGRIDHOMEPAGE" 
     }, 
     })}) 
     .then(graphqlResult => { 
.... etc 
``` 

However, I am seeing the following error: 

``` 
{ errors: 
     [ GraphQLError { 
      message: 'Variable "$type" of required type "String!" was not provided.', 
      locations: [Object], 
      path: undefined } ] } 

看来,在具有架构对象作为第一arg的上下文中使用时,graphql函数不能识别的标准选项对象,至少不是variables定义。我试图挖掘到源在这里,但我的打字稿是不是最好的 - https://github.com/apollographql/react-apollo/blob/master/src/graphql.tsx

+0

嗯,稀释的一个泡菜elmpp。我徘徊,如果有人知道这个答案 – elmpp

回答

0

用户错误 - 因为可以在文档中可以看出,这里的graphql功能是从基础graphql库,没有确实的apollo-react之一。