2015-12-10 2 views
2

Mock-file.jsHttp Дразнящего с угловым и транспортиром

exports.httpBackendMock = function(){ 
    angular.module('httpBackendMock', ['myApp', 'ngMockE2E']) 
    .run(function($httpBackend){ 
    mockPeopleData = { 
     "id": 1, 
     "name": "Jennifer", 
     "gender": "Female" 
    }; 
    $httpBackend.whenGET(/\api\/1\/people/).respond(mockPeopleData); 
    }); 
} 

Я получаю mockPeopleData от живой страницы в нашем приложении.

шаги для достижения: Обновить страницу> Проверить элемент> вкладка Сеть> вкладка XHR> Нажмите конечную точку из раздела «Name» на левой> Then «ответ»

я копирую этот объект и использовать его как «вещь, чтобы издеваться» в испытаниях транспортира.

Spec-file.js

var mockModule = require('./Mock-file.js'); 

describe('testing our mock module', function(){ 
    beforeEach(function(){ 
    browser.addMockModule('httpBackendMock', mockModule.httpBackendMock); 
    }); 
    it('should find html content', function(){ 
    expect(browser.isElementPresent(element(by.binding('person.name')))).to 
    }); 
}); 

Выше мы добавляем наш модуль, и ожидающие транспортир, чтобы найти элемент, содержащий «Дженнифер» на странице с нашей mockPeopleData.

index.html

<span>{{person.name}}</span> 

В идеале, транспортир порадуется наш элемент, а затем определить его в наших тестах. Вместо этого я получаю «элемент не найден» - и я подтвердил, что этого элемента нет, сняв скриншот во время нашего теста.

browser.wait(function() { 
     browser.takeScreenshot().then(function(png) { 
      var stream = fs.createWriteStream("/tmp/screenshot.png"); 
      stream.write(new Buffer(png, 'base64')); 
      stream.end(); 
     }); 
    }, 5000); 
+0

Вы уверены, что вы звоните 'browser.addMockModule()' 'перед browser.get()'? Благодарю. – alecxe

+0

@alecxe yes Я вызываю 'browser.driver.get ('http: // localhost: 8000');' непосредственно перед оператором 'expect' – bruh

ответ

0

called browser.driver.get('http://localhost:8000'); immediately before the expect statement

Я подозреваю, что это проблема. Вы вызываете get() непосредственно на экземпляр драйвера, не позволяя транспортитору вводить вещи «на лету». Используйте browser объект непосредственно:

browser.get("http://localhost:8000"); 
+0

Спасибо за быстрый ответ @alecxe. 'browser.driver.get()' - это просто объект WebDriver от vanilla. Наше приложение вручную загружается - так порой это необходимо. В этом случае, используя 'browser.get ('http: // localhost: 8000');', protractor отвечает * Ошибка: Тайм-аут - Обратный вызов Async не вызывается в течение времени, указанного jasmine.DEFAULT_TIMEOUT_INTERVAL. * Но 'browser.driver .get', protractor отвечает, * Ожидаемое значение false, чтобы быть правдой. * – bruh