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