有人可以帮助我解决以下错误:
(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;
}
}
感谢您的帮助,谢谢