在我的测试中,我启动一些模型数据并模拟响应:
beforeEach(function(){
var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
$httpBackend.whenGET(re).respond({id:12345, usersOnline:5000});
});
it('should find 5000 users in channel 12345', function(){
expect( UsersOnlineService.data.usersOnline).toEqual( 50000);
});
然后在下一个测试语句中说我想要通道的更新值。每个人都离开了,假设这会触发其他行为,所以我需要模拟第二个请求,以便我可以测试该行为。
添加$httpBackend.whenGET
到下一个it
语句不会覆盖beforeEach
价值。它似乎使用原始模拟值:
it('should find 0 users in channel 12345', function(){
$httpBackend.whenGET(re).respond({id:12345, usersOnline:0});
expect( UsersOnlineService.data.usersOnline).toEqual( 50000); //fails
});
如果我在没有 beforeEach 的情况下这样做,两者都会失败并出现通常的“unexpectedGet”错误。
it('should find 5000 users in channel 12345', function(){
var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
$httpBackend.whenGET(re).respond({id:12345, usersOnline:5000});
expect( UsersOnlineService.data.usersOnline).toEqual( 50000); //fails
});
it('should find 0 users in channel 12345', function(){
var re = new RegExp(/^http\:\/\/.+?\/users-online\/(.+)$/);
$httpBackend.whenGET(re).respond({id:12345, usersOnline:0});
expect( UsersOnlineService.data.usersOnline).toEqual( 0); //fails
});
如何在请求之间调整模拟数据?
我也尝试过:
- 夹着一个
beforeEach
之间it
声明
- 设置一个
.respond(
to a fakeResponse
多变的。然后改变fakeResponse
每个值it
陈述。