在JavaScript量角器端到端测试中模拟HTTP后端

时间:2015-12-04 11:18:33

标签: javascript unit-testing mocking protractor e2e-testing

我有一些端到端测试(JavaScript + Protractor),我需要模拟API后端。

我正在使用http-backend-proxy:

这就是我的所作所为:

var HttpBackend = require('http-backend-proxy');
var myData = require('myFakeApiResponse.json');

this.proxy = new HttpBackend(browser);  
this.proxy.whenGET(/.+\/api\/groups\/.+/).respond(200, myData);

JavaScript抱怨whenGET不是函数。

如果我喜欢这样:

this.proxy.whenGET(/.+\/api\/groups\/.+/);

它不再抱怨(但显然我需要设置响应,所以我需要.respond()部分)

我无法理解为什么它不起作用。似乎设置了代理对象,当我在console.log中得到它时:

{ when: [Function],
  whenGET: [Function],
  whenPUT: [Function],
  whenHEAD: [Function],
  whenPOST: [Function],
  whenDELETE: [Function],
  whenPATCH: [Function],
  whenJSONP: [Function],
  context: {},
  flush: [Function],
  syncContext: [Function],
  onLoad: [Getter] }

它似乎是一个合适的JavaScript对象(甚至列出了whenGET()函数!)

1 个答案:

答案 0 :(得分:1)

我也在使用http-backend-proxy。

我需要这个用于传递(主要是html页面作为Angular应用程序):

proxy.onLoad.whenGET(/.*/).passThrough();

以及onLoad:

proxy.onLoad.whenGET('the url').respond(...);

当我使用browser.get(...)导航时,会调用onLoad.whenGET。