in ApolloTests/WatchQueryTests.swift [7:61]
  func testRefetchWatchedQuery() throws {
    let query = HeroNameQuery()
    let initialRecords: RecordSet = [
      "QUERY_ROOT": ["hero": Reference(key: "hero")],
      "hero": [
        "name": "R2-D2",
        "__typename": "Droid",
      ]
    ]
    withCache(initialRecords: initialRecords) { (cache) in
      let networkTransport = MockNetworkTransport(body: [
        "data": [
          "hero": [
            "name": "Artoo",
            "__typename": "Droid"
          ]
        ]
        ])
      let store = ApolloStore(cache: cache)
      let client = ApolloClient(networkTransport: networkTransport, store: store)
      var verifyResult: OperationResultHandler<HeroNameQuery>
      verifyResult = { (result, error) in
        XCTAssertNil(error)
        XCTAssertNil(result?.errors)
        XCTAssertEqual(result?.data?.hero?.name, "R2-D2")
      }
      var expectation = self.expectation(description: "Fetching query")
      let watcher = client.watch(query: query) { (result, error) in
        verifyResult(result, error)
        expectation.fulfill()
      }
      waitForExpectations(timeout: 5, handler: nil)
      verifyResult = { (result, error) in
        XCTAssertNil(error)
        XCTAssertNil(result?.errors)
        XCTAssertEqual(result?.data?.hero?.name, "Artoo")
      }
      expectation = self.expectation(description: "Refetching query")
      watcher.refetch()
      
      waitForExpectations(timeout: 5, handler: nil)
    }
  }