我试图写一个测试的角度服务,我正在使用的图形to &阿波罗。遵循本指南:阿波罗试验
我很感激你的帮助!
我收到了这个错误:失败:预期条件"Match DocumentNode“的匹配操作,找到none.。
rules.spec.ts
import { PlatformGraphQLService } from 'platform-graphql'
import { TestBed, ComponentFixture } from '@angular/core/testing'
import { RulesService, GET_RULE_QUERY } from './rules.service'
import {
ApolloTestingModule,
ApolloTestingController
} from 'apollo-angular/testing'
import { async } from '@angular/core/testing'
import { HttpClientTestingModule } from '@angular/common/http/testing'
import { RulesComponent } from './rules.component'
import { Apollo, ApolloModule } from 'apollo-angular'
describe('RulesService', () => {
let controller: ApolloTestingController
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [
RulesComponent
],
imports: [
ApolloTestingModule,
HttpClientTestingModule,
],
providers: [
PlatformGraphQLService,
ApolloModule,
Apollo
],
})
controller = TestBed.get(ApolloTestingController)
})
it('should return a rule from server', async(() => {
const service: RulesService = TestBed.get(RulesService)
service.loadRules()
.valueChanges.subscribe(() => {
expect(op.operation.variables.consequent.isExluded).toEqual(true)
})
const op = controller.expectOne(GET_RULE_QUERY)
console.log(op)
op.flush({
'conditions': [
{
'glItemType': 'DEPARTMENT',
'operation': 'LEQ',
'value': 1300,
},
{
'glItemType': 'SUBDEPARTMENT',
'operation': 'GEQ',
'value': 4805,
}
],
'consequent': {
'isExluded': true,
},
})
}))
afterEach(() => {
controller.verify()
})
})
发布于 2019-04-02 21:57:21
不确定您是否还在遇到这个问题,但我可以使用以下评论来解决这个问题:https://github.com/apollographql/apollo-angular/issues/691#issuecomment-417293424。
它归结为三块:
TestBed.configureTestingModule({
...
providers: [
...
{
provide: APOLLO_TESTING_CACHE,
useValue: new InMemoryCache({addTypename: true}),
},
]
});expectOne中,调用addTypenameToDocumentconst op = controller.expectOne(addTypenameToDocument(getClientsQuery));__typename添加到模拟数据中.我相信在您的示例中,它将如下所示:op.flush({
'conditions': [
{
'glItemType': 'DEPARTMENT',
'operation': 'LEQ',
'value': 1300,
'__typename': 'DefinedOnBackend'
},
{
'glItemType': 'SUBDEPARTMENT',
'operation': 'GEQ',
'value': 4805,
'__typename': 'DefinedOnBackend'
}
],
'consequent': {
'isExluded': true,
'__typename': 'DefinedOnBackend'
},
})对我来说,它看起来如下(实质上是将__typename添加到每个返回的记录中):
op.flush({
data: {
getClients: clients.map(c => ({ ...c, __typename: 'ClientDTO' }))
}
});https://stackoverflow.com/questions/54449365
复制相似问题