0

有人可以帮助我解决以下错误:

(method) CallGraphQL.executeQuery(queryToExecute: DocumentNode): Promise<ApolloQueryResult<any>> Type 'Promise<ApolloQueryResult<any>>' is missing the following properties from type 'ApolloQueryResult<any>': data, loading, networkStatus, stale

我所做的几乎是尝试使用屏幕播放模式和 serenity-js 框架创建一个问题,使用 typescript 进行编码,所以当我尝试创建问题时,我尝试使用我在课堂上创建的能力文件,但我在能力类中遇到了 Promise 问题:

从这个文件是我得到错误的地方:

import { Actor, Question, Log } from '@serenity-js/core';
import { CallGraphQL } from '../abilities/callGraphQL';
import { DocumentNode } from 'graphql';
import { ApolloClient, ApolloQueryResult } from 'apollo-client';

export const expectedResult = (query: DocumentNode): Question<ApolloQueryResult<any>> =>
  Question.about(`the result of the query`, (actor: Actor): ApolloQueryResult<any> => {
    const ability = CallGraphQL.as(actor);
    Log.the(ability.executeQuery(query));
    return Promise.resolve(ability.executeQuery(query)); // HERE IS THE ERROR
});

从这个文件我调用异步方法:

import { NormalizedCacheObject } from 'apollo-cache-inmemory';
import { ApolloClient, ApolloQueryResult } from 'apollo-client';
import { Container } from 'inversify';
import 'reflect-metadata';
import { Ability, Actor, UsesAbilities } from '@serenity-js/core';
import GraphQLConnection from '../../src/GraphQLConnection';
import { DocumentNode } from 'graphql';

export class CallGraphQL implements Ability {
  public result: ApolloQueryResult<any>;
  public _apolloClient: ApolloClient<NormalizedCacheObject>;
  private projectContainer: Container = new Container();

  constructor(private readonly myAbility: GraphQLConnection) {
  }

  public static with(myAbility: GraphQLConnection): CallGraphQL {
    return new CallGraphQL(myAbility);
  }

  public static as(actor: UsesAbilities): CallGraphQL {
    return actor.abilityTo(CallGraphQL);
  }

  public connect(): ApolloClient<NormalizedCacheObject> {
    const myApollo = new GraphQLConnection();
    this._apolloClient = myApollo.getConnection(this._apolloClient);
    return this._apolloClient;
  }

  public async executeQuery(queryToExecute: DocumentNode): Promise<ApolloQueryResult<any>> {
    try {
      this.result = await this._apolloClient.query({
        query: queryToExecute,
      });
    } catch (error) {
      console.log(error);
    }
    return this.result;
  }
}

感谢您的帮助,谢谢

4

0 回答 0