量角器,在api请求上使用angular2模拟后端

Man*_*sen 24 protractor nightwatch.js angular

我可以使用一些帮助找到解决问题的方法.当它向api发出请求时,我需要向angular2应用程序模拟一些数据,我需要做类似的事情:

$httpBackend.when('GET', '/userbookings/').respond(my json file data);
Run Code Online (Sandbox Code Playgroud)

问题是我可以在谷歌上找到所有,使用$ httpBackend用于angularJS(角度1).

有没有人知道如何在我的E2E测试中使用它(该应用程序是一个angular2 applciation)?我正试图用量角器或夜间仪表做这个(尝试过两个框架)

规格测试:

describe('Protractor Mocking bookings for angular2 site', function() {

var ngMockE2E = require('ng-mock-e2e');

var $httpBackend = ngMockE2E.$httpBackend;

beforeEach(function() {
    ngMockE2E.addMockModule();
    ngMockE2E.addAsDependencyForModule('myApp');
    ngMockE2E.embedScript('/bower_components/angular-mocks/angular-mocks.js');
});


afterEach(function() {
    ngMockE2E.clearMockModules();
});

it('Inject mock data of bookings', function() {

    var EC = protractor.ExpectedConditions;
    var global = require('../bin/globals.js');

    // Bookings data in a json file which should be send as the response
    var mockData = require('../testData.json');

    browser.ignoreSynchronization = false;

    $httpBackend.when('GET', '/userbookings').respond(mockData);

    browser.get(global.so.enLoggedIn);

});

});
Run Code Online (Sandbox Code Playgroud)

这个测试不会起作用,因为它使用了一些angular1方式.已经展示了它,所以你可以看到我的测试看起来如何.

希望有人可以帮助我,因为很难找到一些与angular2合作的人.

ale*_*cxe 24

Protractor 还不支持为Angular 2应用程序添加模拟模块:

// TODO: support mock modules in Angular2. For now, error if someone
// has tried to use one.
if (self.mockModules_.length > 1) {
  deferred.reject('Trying to load mock modules on an Angular2 app ' +
      'is not yet supported.');
}
Run Code Online (Sandbox Code Playgroud)

并且,我还为TODO创建了一个github问题以引起注意:

顺便说一句,这也意味着它protractor-http-mock不会起作用,因为它依赖于addMockModule 内部.我个人试过protractor-http-mock一个示例Angular2应用程序,得到:

失败:尚不支持尝试在Angular2应用程序上加载模拟模块.

对于http-backend-proxyhttpbackend包也是如此.


我想,虽然这个问题还没有解决,你应该考虑启动一个代理,它可以作为你的API后端的"外部模拟",但没有亲自完成,请参阅: