![](/img/trans.png)
[英]Angular JS Unit Testing $httpBackend spec has no expectations
[英]Angular unit test mockbackend SPEC HAS NO EXPECTATIONS
我正在使用Jasmine&Karma进行角度应用程序的单元测试。 我已经写了这样的单元测试
it('should match request object', inject([UserService, MockBackend], (userService: UserService, mockBackend) => {
mockBackend.connections.subscribe((connection: MockConnection) => {
expect(connection.request.method).toEqual(RequestMethod.Post);
expect(connection.request.json().getUserProfileRequest).toEqual({
userid: '1234',
});
connection.mockRespond(new Response(new ResponseOptions({
body: UsersMockData.GET_USER_PROFILE,
})));
});
usersService.getUserProfile(1234)
.subscribe(data => {
expect(data).toBe(UsersMockData.GET_USER_PROFILE);
});
}));
当我将测试用例拆分为两个单独的测试用例时,一切正常,现在没有问题,我这样编写代码
it('Check userProfile request', inject([UserService, MockBackend], (userService: UserService, mockBackend) => {
mockBackend.connections.subscribe((connection: MockConnection) => {
expect(connection.request.method).toEqual(RequestMethod.Post);
expect(connection.request.json()getUserProfileRequest).toEqual({
userid: '1234',
});
});
}));
it('check return data from service', inject([UserService, MockBackend], (userService: UserService, mockBackend) => {
connection.mockRespond(new Response(new ResponseOptions({
body: UsersMockData.GET_USER_PROFILE,
})));
usersService.getUserProfile(1234)
.subscribe(data => {
expect(data).toBe(UsersMockData.GET_USER_PROFILE);
});
}));
这两个测试用例都具有Expect语句,但是当我执行测试用例时,我看到一条消息SPEC HATCH NO EXPECTATIONS对于这两个测试用例。 我想知道为什么它表明规格没有期望。
如果您不使用.subscribe
方法,则将不会发出get请求,因此永远不会调用模拟后端。 如果不提供模拟响应,则对方法的订阅将永远不会收到值。 因此,要完全达到期望,每次测试中必须有一定数量的最少布线。 在您的情况下:
it('Check userProfile request', inject([UserService, MockBackend], (userService: UserService, mockBackend) => {
mockBackend.connections.subscribe((connection: MockConnection) => {
expect(connection.request.method).toEqual(RequestMethod.Post);
expect(connection.request.json().getUserProfileRequest).toEqual({
userid: '1234',
});
});
usersService.getUserProfile(1234).subscribe(data => {});
}));
it('check return data from service', inject([UserService, MockBackend], (userService: UserService, mockBackend) => {
mockBackend.connections.subscribe((connection: MockConnection) => {
connection.mockRespond(new Response(new ResponseOptions({
body: UsersMockData.GET_USER_PROFILE,
})));
});
usersService.getUserProfile(1234)
.subscribe(data => {
expect(data).toBe(UsersMockData.GET_USER_PROFILE);
});
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.