2017-10-05 35 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之一。