我正在尝试为以下功能编写一个简单的单元测试用例,
getMembers() {
this.service.getMembers()
.subscribe(response => {
this.allMembers = response;
})
}
下面是我写的规范,
it("should call getMembers subscribe method", fakeAsync(() => {
let membersSpy = spyOn(apiService, 'getMembers' ).and.returnValue(of(mockData));
let subSpy = spyOn(apiService.getMembers(),'subscribe');
homeComponent.getMembers();
fixture.detectChanges();
expect(membersSpy).toHaveBeenCalledBefore(subSpy);
expect(subSpy).toHaveBeenCalled();
}));
it("should call getMembers and return list of members", fakeAsync(() => {
expect(homeComponent.allMembers).toBeDefined();
expect(homeComponent.allMembers.length).toBeGreaterThan(1);
}));
此规格should call getMembers and return list of members
出现以下错误
Expected undefined to be defined.
我在这里做错了什么?
答案 0 :(得分:0)
我将在beforeEach中进行设置,并稍微更改第一个测试。
beforeEach(() => {
let membersSpy = spyOn(apiService, 'getMembers' ).and.returnValue(of(mockData));
homeComponent.getMembers();
fixture.detectChanges();
});
it("should set allMembers to response of getMembers", fakeAsync(() => {
expect(homeComponent.allMembers).toEqual(mockdata);
}));
it("should call getMembers and return list of members", fakeAsync(() => {
expect(homeComponent.allMembers).toBeDefined();
expect(homeComponent.allMembers.length).toBeGreaterThan(1);
}));
第二项测试遇到的问题是您没有明确调用getMembers()
。现在,所有这些设置都在beforeEach中,并且beforeEach将在每次it
测试之前运行。