量角器不同的模拟httpbackend响应

时间:2016-01-27 10:29:59

标签: angularjs unit-testing protractor gulp-protractor

我正在使用模拟模块进行一些测试。

加载页面时,例如

    browser.get('http://localhost:5643/#/balance/import');

下面这个api url被调用,我们得到以下响应,这很好。

$httpBackend.whenGET('https://localhost:44329/api/daystatus').respond(
                {
                    'DayID': 249,
                    'weekend': false,
                    'dayStatusTypeID': 5,
                    'balance': null
                }
            );

但是当另一个页面被加载时,例如

    browser.get('http://localhost:5643/#/dashboard');

并且还在模拟模块中调用api url

但是这次我希望它能够返回不同的响应。 (因为上一页已加载并且发生了一些UI测试操作。)

$httpBackend.whenGET('https://localhost:44329/api/daystatus').respond(
                {
                    'DayID': 249,
                    'weekend': false,
                    'dayStatusTypeID': 7,
                    'balance': null
                }
            );

我怎么能在我的模拟模块中使用第二次调用API url这次不是第一次?目前我加载的任何页面都使用:

$httpBackend.whenGET('https://localhost:44329/api/daystatus').respond(
                {
                    'DayID': 249,
                    'weekend': false,
                    'dayStatusTypeID': 5,
                    'balance': null
                }
            );

我可以检测请求来自哪个页面。或者我可以传入查询字符串变量吗?不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:3)

您可以通过Referer标题区分API调用:

$httpBackend.whenGET('https://localhost:44329/api/daystatus', 
                     {'Referer': 'http://localhost:5643/#/balance/import'})

$httpBackend.whenGET('https://localhost:44329/api/daystatus', 
                     {'Referer': 'http://localhost:5643/#/dashboard'})