gpt4 book ai didi

javascript - 如何在单元测试中的请求之间更改 $httpBackend when[method] 语句?

转载 作者:行者123 更新时间:2023-11-29 14:51:20 25 4
gpt4 key购买 nike

在我的测试中,我启动了一些模型数据并模拟响应:

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

然后在下一个测试语句中说我想要 channel 的更新值。每个人都离开了,假设这会触发其他行为,所以我需要模拟第二个请求,以便测试该行为。

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

如何在请求之间调制模拟数据?

我也试过:

  • it 语句之间夹入一个 beforeEach
  • .response( 设置为 fakeResponse 变量。然后在每个 it 语句中更改 fakeResponse 值.

最佳答案

重置期望值()

执行

afterEach($httpBackend.resetExpectations);

文档

Resets all request expectations, but preserves all backend definitions. Typically, you would call resetExpectations during a multiple-phase test when you want to reuse the same instance of $httpBackend mock.

文档来源:https://docs.angularjs.org/api/ngMock/service/ $http后端

关于javascript - 如何在单元测试中的请求之间更改 $httpBackend when[method] 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com