1

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;」ということがわかります。ステートメントが実行されます。

この場合、プロミスがどのように機能するかについて何か不足していますか?

4

1 に答える 1