2015-11-27 4 views
2

Я пытаюсь использовать модуль AddMockModule для прототипа, чтобы вставлять макеты в мой тест конца-конца.Отказывание углового обслуживания в Protractor

Мой тест должен идти на веб-сайт, найти кнопку css-класса и нажать на нее. Кнопка click вызывает функцию dostuff() в MyService, которая извлекает данные из бэкэнд.

Мой код до сих пор:

describe('should display validation error', function() { 

it('should work', function() { 
    browser.get('http://my.url'); 

    browser.addMockModule('MyService', function() { 
      // Fake Service Implementation returning a promise 
      angular.module('MyService', []) 
      .value({ 
       dostuff: function() { 
        return { 
         then: function (callback) { 
          var data = { "foo": "bar" }; 
          return callback(data); 
         } 
        }; 
       } 
      }); 
    }); 

    var button = element(by.css('.btn-primary')); 
    button.click(); 
    browser.sleep(5000); 
}); 
}); 

Тест доступа к веб-сайт и нажав на кнопку. Проблема в том, что отображаются реальные данные из базы данных, а не данные макета. Я следил за несколькими потоками, как этот: How to mock angular.module('myModule', []).value() in Jasmine/Protractor

Однако, похоже, функция protractor.getInstance() устарела.

Кто-нибудь получил эту работу?

+0

по вопросу «protractor.getInstance» здесь смотрите: http://stackoverflow.com/questions/25496379/should-i-use-browser-or -ptor-protractor-getinstance – timtos

ответ

2

Взгляните на модульный тест на addMockModule(). Попробуйте добавить оператор addMockModule перед вызовом browser.get()

https://github.com/angular/protractor/blob/673d416b7ef5abd0953da940cfa8cf2a59650df4/spec/basic/mockmodule_spec.js

+0

Хмм, нет, это не помогло. Я по-прежнему получаю данные из базы данных вместо данных mock. У кого-то еще есть идеи? – ohansrud

+0

Я получаю это сообщение в окне консоли Selenium. Является ли это признаком того, что Транспортер не может получить доступ к угловому приложению?
Если (!) Угловой.элемент (el) .инжектор()) { throw new Error ('root element (' + rootSelector + ') не имеет инжектора.' + 'это может означать, что он не внутри ng- приложение.'); } angular.element (el) .injector(). Get ('$ browser'). notifyWhenNoOutstandingRequests (обратный вызов); } } catch (err) { callback (err.message); – ohansrud

Смежные вопросы