我可以用一些帮助来找到我的问题的解决方案。我需要向我的angular2应用程序模拟一些数据,当它向api发出请求时,我需要做一些像:
- $httpBackend.when('GET','/userbookings/').respond(my json file data);
问题是,我可以在google上找到,使用用于angularJS(角度1)的$ httpBackend。
有没有人知道我如何能够在我的E2E测试中工作(应用程序是一个角度2的应用程序)?我试图用量角器或夜视仪(尝试两个框架)
规格测试:
- 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);
- });
- });
这个测试不会工作,因为它使用一些angular1方式。已经展示了,所以你可以看到我的测试是如何。
希望有人可以帮助我,在这里,真的很难找到一些使用angular2的工作。
量角器
does not yet support adding mock modules for Angular 2 applications:
- // 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.');
- }
而且,我也为TODO创造了一个github问题来引起注意:
> Support adding mock modules to Angular 2 applications
顺便说一下,这也意味着量角器http-mock不会工作,因为它依赖于addMockModule internally.我亲自试用了一个示例Angular2应用程序的量角器http-mock,得到:
Failed: Trying to load mock modules on an Angular2 app is not yet supported.
http-backend-proxy
和httpbackend
套件也是如此。
我猜,虽然这个问题还没有解决,你应该考虑发起一个代理,作为一个“外部模拟”你的API后端,没有做到这一点,看到更多的:
> Running AngularJS Protractor with proxy to https
> Mocking and Stubbing with protractor