【发布时间】:2018-04-11 12:41:46
【问题描述】:
首先,我很抱歉。我真的是 Angular 的新手,我不确定我知道的足够多,无法提出一个好的问题,更不用说提供一些小的工作示例了。
我正在尝试在单元测试中使用 spyOn,但运气不佳。
基本上,我的单元测试调用组件上的一个方法,该方法调用一个 service1,该方法调用另一个 service2。
当我尝试监视 service1 时,它没有使用我提供的模拟值。它调用“真正的”ServiceProvidersHTTPService.getAllUsers 并使用 AppConfigService 而不是 MockAppConfigService。
我将从复制我的测试开始。
describe('ProjectAnalystComponent', () => {
let component: ProjectAnalystComponent;
let fixture: ComponentFixture<ProjectAnalystComponent>;
let service: ServiceProvidersHTTPService ;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [HttpClientModule, RouterTestingModule],
declarations: [ ProjectAnalystComponent ],
providers:
[
ServiceProvidersHTTPService,
CurrentCreateProjectService,
NotificationService,
MessageService,
ProjectLeadAnalystHTTPService,
ExceptionService,
{provide: AppConfigService, useClass: MockAppConfigService }
],
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ProjectAnalystComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
console.log("######### Did this run");
let service = fixture.debugElement.injector.get(ServiceProvidersHTTPService);
spyOn(service, 'getAllUsers').and.returnValue('{}');
expect(component).toBeTruthy();
});
});
【问题讨论】:
标签: angular unit-testing typescript