by.binding
を使用していてハマりました。
こんなエラーメッセージです。
Message: TypeError: Invalid locator Stacktrace: TypeError: Invalid locator ==== async task ==== Protractor.waitForAngular() ==== async task ====
ProtractorかつJasmineでテストを書く際、
下記のように、promiseを意識せずに書くことができます。
ProtractorがJasmineの拡張をしているかららしいです。
expect(element(by.binding('foo')).getText()).toBe('foo-bar');
ただし、これは、view側下記のような書き方のときだけです。
<span ng-bind="foo"></span>
view側が下記のような、波括弧を使った書き方だと、promiseの解決ができないようです。
<span>{{foo}}</span>
そんな時は、下記のような書き方でテストを書きます。
element(by.binding('foo')).getText().then(function(val) { expect(val).toBe('foo-bar'); });
参考
http://angular.github.io/protractor/#/api?view=ElementFinder