sli*_*wp2 7 typescript apollo-server apollo-server-testing
我使用apollo-server-testing
package编写集成测试遵循这个官方文档。但是当我将ApolloServer
类的实例传递给createTestClient
方法时,tsc
抛出一个类型不兼容的错误。
“ApolloServer”类型的参数不能分配给“ApolloServerBase”类型的参数。属性“requestOptions”的类型不兼容。类型 'Partial>' 不能分配给类型 'Partial>'。属性“documentStore”的类型不兼容。输入'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-caching/dist/InMemoryLRUCache").InMemoryLRUCache | undefined' 不可分配到类型 'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-caching/dist/ InMemoryLRUCache").InMemoryLRUCache ...'。输入 'import("/Users/ldu020/workspace/github.
这是最小的复制代码:
topic.integration.test.ts
:
import { constructTestServer } from '../../../__utils';
import { createTestClient } from 'apollo-server-testing';
describe('topic integration test suites', () => {
it('should ', () => {
const { server, cnodeAPI } = constructTestServer();
const { query } = createTestClient(server); // tsc throw an error here
});
});
Run Code Online (Sandbox Code Playgroud)
__util.ts
:
import { ApolloServer } from 'apollo-server';
import { contextFunction as defaultContext } from '../graphql/context';
import { schema } from '../graphql/schema';
import { CnodeAPI } from '../graphql/api';
const constructTestServer = ({ context = defaultContext } = {}) => {
const cnodeAPI = new CnodeAPI();
const server = new ApolloServer({
schema,
dataSources: () => ({ cnodeAPI }),
context,
});
return { server, cnodeAPI };
};
export { constructTestServer };
Run Code Online (Sandbox Code Playgroud)
依赖版本:
"apollo-datasource-rest": "^0.6.10",
"apollo-server": "^2.9.14",
"apollo-server-express": "^2.9.14",
"apollo-server-testing": "^2.9.15",
"typescript": "^3.7.4"
Run Code Online (Sandbox Code Playgroud)
createTestClient
功能界面如下:
"apollo-datasource-rest": "^0.6.10",
"apollo-server": "^2.9.14",
"apollo-server-express": "^2.9.14",
"apollo-server-testing": "^2.9.15",
"typescript": "^3.7.4"
Run Code Online (Sandbox Code Playgroud)
所以当我尝试做这样的类型断言时:
import { ApolloServerBase } from 'apollo-server-core';
// ...
createTestClient(server as ApolloServerBase);
Run Code Online (Sandbox Code Playgroud)
tsc
抛出一个新的类型错误:
'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-core/dist/ApolloServer").ApolloServerBase 类型的参数不可分配给输入'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-core/dist/ApolloServer").ApolloServerBase' . 属性“requestOptions”的类型不兼容。类型 'Partial>' 不能分配给类型 'Partial>'。属性“documentStore”的类型不兼容。输入'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-caching/dist/InMemoryLRUCache").InMemoryLRUCache | 不明确的' 不可分配到类型 'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-caching/dist/InMemoryLRUCache" ).InMemoryLRUCache ...'. 类型'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-caching/dist/InMemoryLRUCache").InMemoryLRUCache'不可分配给类型'import( “/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-caching/dist/InMemoryLRUCache”)。InMemoryLRUCache'。).InMemoryLRUCache ...'. 类型'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-caching/dist/InMemoryLRUCache").InMemoryLRUCache'不可分配给类型'import( “/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-caching/dist/InMemoryLRUCache”)。InMemoryLRUCache'。).InMemoryLRUCache ...'. 类型'import("/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-caching/dist/InMemoryLRUCache").InMemoryLRUCache'不可分配给类型'import( “/Users/ldu020/workspace/github.com/mrdulin/cnodejs-graphql-api-apollo/node_modules/apollo-server-testing/node_modules/apollo-server-caching/dist/InMemoryLRUCache”)。InMemoryLRUCache'。
我不想做像createTestClient(server as any);
. 它有效,但我想正确地制作类型。
小智 10
我认为造成之间不同版本的问题apollo-server-express
和apollo-server-testing
。我已经更新到 apollo-server-express 和 apollo-server-testing 到 2.9.16。然后,这种类型的错误就消失了。请尝试一下。
归档时间: |
|
查看次数: |
2531 次 |
最近记录: |