2017-02-09 22 views
0

我使用茉莉&噶单元测试角应用程序。这样角单元测试mockbackend SPEC HAS没什么要求

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); 
    }); 
})); 

代码两者都有希望的语句,但是当我执行测试用例,我看到一则消息SPEC具有这两个测试用例没有希望。我想知道为什么它显示spec没有预期。

+0

因为如果你不同意getUserProfile后端不会被调用,如果你不提供从后端模拟响应有对你的订阅任何事件。 – jonrsharpe

+0

@jonrsharpe我错过了一段代码,这将让模拟数据,更新的代码。你能更彻底地说你想说什么吗? – Dmehro

+0

您的第二个测试会失败,因为甚至是模拟后端订阅之外的连接?你为什么试图把它分开? – jonrsharpe

回答

1

如果你不.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); 
     }); 
})); 
相关问题