将片段从GraphQL文件导入到另一个GraphQL文件不起作用

时间:2019-05-23 10:40:50

标签: graphql karate

我试图通过使用.graphql文件并传递变量对空手道进行测试。在我的graphql模式上,我试图重用另一个.graphql文件中的片段。我尝试按照https://www.apollographql.com/docs/react/advanced/fragments#webpack-importing-fragments的说明进行操作,但是当我对.graphql文件使用#import语句运行空手道测试时,该测试失败,说明该片段未知。

FindProfile.feature

@smoke
Feature: Test GraphQL FindTrendingProfiles

    Background:
        * url 'https://192.168.0.0.1'

    Scenario: FindTrendingProfiles Request
        Given def query = read('FindProfile.graphql')
        And def variables = { cursor: "1", cursorType: PAGE, size: 2 }
        And request { query: '#(query)', variables: '#(variables)' }
        When method post
        Then status 200

FindProfile.graphql

#import "./Media.graphql"

query FindProfile($cursor: String, $cursorType: CursorType!, $size: Int!) {
  FindProfile(cursor: $cursor, cursorType: $cursorType, size: $size) {
   edges{
        id
       profilePictureMedia{
               ...Media
             }
  }
}
}

Media.graphql

    fragment Media on Media {
    id
    title
    description
  }

我希望我可以重用另一个.graphql文件中的片段,但实际上我无法做到这一点。任何帮助是极大的赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

对于空手道GraphQL只是作为纯文本或原始字符串处理。不支持GraphQL导入。

团队通常要做的是在客户端向服务器发出HTTP POST请求时获得有效的GraphQL样本。它甚至可以包含片段,就像您在these examples中看到的一样。

然后,您的测试所需要做的就是重播该内容。空手道为您提供了许多字符串处理功能,例如replace,如果您需要数据驱动的测试。

总而言之,请使用完整的GraphQL字符串。如果需要修改它们,请使用replace或使用JS或Java实用程序进行自定义字符串操作。在大多数情况下,GraphQL variables足以进行数据驱动的测试。