Я пишу сквозные тесты для своего приложения на основе AngularJS, используя Protractor. В некоторых случаях для тестирования требуется использование макетов — например, проблема с сетевым подключением. Если запрос AJAX к серверу завершается неудачно, пользователь должен увидеть предупреждающее сообщение.
Мои моки прописаны в приложении как сервисы. Я хочу, чтобы они были доступны для тестов, чтобы написать что-то вроде этого:
var proxy;
beforeEach(function() { proxy = getProxyMock(); });
it("When network is OK, request succeeds", function(done) {
proxy.networkAvailable = true;
element(by.id('loginButton')).click().then(function() {
expect(element(by.id('error')).count()).toEqual(0);
done();
});
});
it("When network is faulty, message is displayed", function(done) {
proxy.networkAvailable = false;
element(by.id('loginButton')).click().then(function() {
expect(element(by.id('error')).count()).toEqual(1);
done();
});
});
Как реализовать функцию getProxyMock
для передачи объекта из приложения в тест? Я могу хранить прокси в объекте window
приложения, но до сих пор не знаю, как получить к нему доступ.