Angular 使用秋田查询的角度测试服务-模拟数据

Angular 使用秋田查询的角度测试服务-模拟数据,angular,testing,service,akita,Angular,Testing,Service,Akita,我和秋田州经理一起工作。 我有一些服务/类正在订阅我的一个查询。 我试图用jasmine createSpyObj在我的查询中模拟一些数据 这是我的服务(部分): 这是我的测试: import { TestBed, async, tick } from '@angular/core/testing'; import { SomeLogicService } from './somelogic.service'; import { SomeQueryService } from './some.s

我和秋田州经理一起工作。 我有一些服务/类正在订阅我的一个查询。 我试图用jasmine createSpyObj在我的查询中模拟一些数据

这是我的服务(部分):

这是我的测试:

import { TestBed, async, tick } from '@angular/core/testing';
import { SomeLogicService } from './somelogic.service';
import { SomeQueryService } from './some.service';
import { SomeQuery } from '../stores/order/some/some.query';
import { of } from 'rxjs';


describe('EnhancementPriceService', () => {
    let logicService: SomeLogicService;
    let someQuery: jasmine.SpyObj<SomeQuery>;

    beforeEach(async(() => {
        TestBed.configureTestingModule({
            providers: [
                {
                    provide: SomeQueryService,
                    useValue: jasmine.createSpyObj('SomeQueryService', ['get'])
                },
                {
                    provide: SomeQuery,
                    useValue: jasmine.createSpyObj('SomeQuery', ['selectActive'])
                }
            ]
        });
    }));

    beforeEach(() => {
        someQuery = TestBed.get(SomeQuery);
        logicService = TestBed.get(SomeLogicService);
    });

    it('should return something', () => {
        SomeQuery.selectActive.and.returnValue(
            of([])
        );
        tick();
        logicService.someMethod();
    });
});
从'@angular/core/testing'导入{TestBed,async,tick};
从“./somelogic.service”导入{SomeLogicService};
从“/some.service”导入{SomeQueryService};
从“../stores/order/some/some.query”导入{SomeQuery};
从'rxjs'导入{of};
描述('EnhancementPriceService',()=>{
let logicService:SomeLogicService;
让我们来提问:jasmine.SpyObj;
beforeach(异步(()=>{
TestBed.configureTestingModule({
供应商:[
{
提供:SomeQueryService,
useValue:jasmine.createSpyObj('SomeQueryService',['get']))
},
{
提供:SomeQuery,
useValue:jasmine.createSpyObj('SomeQuery',['selectActive']))
}
]
});
}));
在每个之前(()=>{
someQuery=TestBed.get(someQuery);
logicService=TestBed.get(SomeLogicService);
});
它('应该返回某物',()=>{
SomeQuery.selectActive.and.returnValue(
([])的
);
勾选();
logicService.someMethod();
});
});
不知怎的,我有一个测试错误,它说:

“无法读取未定义的属性'subscribe'”

我的测试基于秋田官方文件: 我猜问题是:我试着测试服务,而不是组件。 还尝试提供存根查询-它是这样工作的,但对于每个测试,我需要其他数据…

解决方案很简单。 我需要在返回存根后获得逻辑服务。因此:

it('should return something', () => {
   SomeQuery.selectActive.and.returnValue(
      of([])
   );

   logicService = TestBed.get(SomeLogicService);
   logicService.someMethod();
});
解决办法很简单。 我需要在返回存根后获得逻辑服务。因此:

it('should return something', () => {
   SomeQuery.selectActive.and.returnValue(
      of([])
   );

   logicService = TestBed.get(SomeLogicService);
   logicService.someMethod();
});