Protractor と chai-as-promised を使用して、cucumber.js でテストを作成しようとしています。
私の Page オブジェクトには、次のコードの断片があります。
var menusOnListElements = element.all(by.repeater('menu in menus').column('menu.name'))
this.isMenuListed = function(menu) {
return menusOnListElements.each(function(element) {
return element.getText().then(function (name) {
if (menu.name === name) {
return true; //this is executed
}
});
});
};
私のステップ定義コードでは、次のことを行います。
var menu = {};
menu.name = 'Abc';
expect(new MenusPage().isMenuListed(menu)).to.eventually.be.true.notify(done);
このテストを実行すると、
undefined が真であると予想される
これは、isMenuListed メソッドが true ではなく undefined を返したことを意味します。ただし、デバッグしたところ、「return true;」ということがわかります。ステートメントが実行されます。
この場合、プロミスがどのように機能するかについて何か不足していますか?