繁体   English   中英

Angular单元测试Mockbackend SPEC没有期望

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM