量角器 - 未知错误:使用by.model时未定义角度

bsc*_*tty 3 unit-testing end-to-end protractor webpack angular

我正在为我的Angular组件编写一些量角器测试,当我尝试使用by.model选择输入元素时,不断收到错误"未知错误:未定义角度".

它奇怪,因为如果我这样做它工作正常和pases:

it('should have an input element for searching', () => {
    var inputElement = element(by.model('searchText');
    expect(inputElement).toBeDefined();
});
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做这样的事情时,它会因角度未定义的错误而失败:

it('should filter the search text', () => {
     var inputElement = element(by.model('searchText');
     expect(inputElement).toBeDefined();

     inputElement.clear()
     inputElement.click();
     inputElement.sendKeys('ICBC');

     var tableLengthRow = element.all(by.css('.animate-repeat').count();
     expect(tableLength).toBe(1);
});
Run Code Online (Sandbox Code Playgroud)

如果我替换这一行:

var inputElement = element(by.model('searchText');
Run Code Online (Sandbox Code Playgroud)

这一个:

var inputElement = element.all(by.tagName('input')).get(0);
Run Code Online (Sandbox Code Playgroud)

我把它留给测试通过.

有谁知道为什么上面的第一个测试使用by.model而不是第二个我实际点击该元素的测试?

然后我如何使用Webpack和npm在页面上定义角度?

谢谢

acd*_*ior 10

by.model Angular(angular2,angular4和on)不支持.

推荐的替代方案是by.css().

根据角度/量角器的当前自述:

量角器适用于大于1.0.6/1.1.4的AngularJS版本,并且与Angular应用程序兼容.请注意,对于Angular应用程序,不支持by.binding()by.model()定位器.我们建议使用by.css().

Angular Guide的备选示例- E2E测试:

Previous code               New code         Notes
by.model('$ctrl.query')     by.css('input')  The model matcher relies on AngularJS ng-model
by.model('$ctrl.orderProp') by.css('select') The model matcher relies on AngularJS ng-model
Run Code Online (Sandbox Code Playgroud)