如何设置e2e量角器后端请求模拟/存根

时间:2015-11-24 15:25:56

标签: angularjs protractor angularjs-e2e e2e-testing ngmocke2e

我尝试将我的独立量角器项目设置为模拟我的一些后端请求。因此,我在 protractor.conf.js browser.addMockModule('httpBackend', function() { angular.module('httpBackend', ['myApp', 'ngMockE2E']).run(function($httpBackend) { $httpBackend.whenPOST(/^requests\/*/).respond(function(method, url, data) { var obj = {"msg": "Response!"}; return [200, JSON.stringify(obj), {}]; }); }) }) 函数中添加了respond()并附加了另一个模块

200 OK

这让我可以拦截任何请求,但我没有得到我想要在{{1}}中返回的内容。我似乎只是得到{{1}}。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

只是为了让你知道我是如何解决的:

文档说出以下内容:

  

response方法接受一组要返回的静态数据或一个可以返回包含响应状态(数字),响应数据(字符串),响应头(Object)和状态文本(字符串)的数组的函数)。

在我的情况下,标题对象似乎不是可选的,我最后在返回数组之前自己设置它:

browser.addMockModule('httpBackend', function() {
    angular.module('httpBackend', ['myApp', 'ngMockE2E']).run(function($httpBackend) {
        $httpBackend.whenPOST(/^requests\/*/).respond(function(method, url, data) {
            var obj = {"msg": "Response!"},
                resHeader = {
                    "Cache-Control": "no-cache, no-store, max-age=0",
                    "Date": "Tue, 24 Nov 2015 17:08:57 GMT",
                    "Pragma": "no-cache",
                    "Transfer-Encoding": "chunked",
                    "Content-Type": "application/json; charset=UTF-8",
                    "Expires": "Thu, 01 Jan 1970 00:00:00 GMT",
                    "Access-Control-Allow-Origin": "*",
                    "Access-Control-Allow-Headers": "origin,x-requested-with,access-control-request-headers,content-type,access-control-request-method,accept",
                    "Access-Control-Allow-Methods": "POST, GET, OPTIONS, DELETE",
                    "Access-Control-Credentials": "true",
                    "Content-Language": "de-DE",
                    "Access-Control-Max-Age": "3600"
                };
            return [200, JSON.stringify(obj), resHeader];
        });
    })
})

任何人都知道为什么这是必要的或者哪些属性已经过时了?