预期未定义为已定义 Karma Jasmine 单元测试用例
Expected undefined to be defined Karma Jasmine Unit Test case
我正在尝试为以下功能编写一个简单的单元测试用例,
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.
我哪里做错了?
我会在 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
测试之前 运行。
我正在尝试为以下功能编写一个简单的单元测试用例,
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.
我哪里做错了?
我会在 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
测试之前 运行。