JS Jasmine 的 `beforeEach` 在 运行 测试之前没有等待

JS Jasmine's `beforeEach` not waiting before running the test

我是 Protractor 和 Jasmine 的新手,我在编写第一个测试时遇到了这个问题:

    describe('Test suite for gui', () => {
    let page: GuiPage;

        beforeEach(async () => {
            page = new GuiPage();
            console.log(`GuiPage object status before each:${page}`);
            await page.login();
        });
    it('First test', async () => {
            console.log(`GuiPage object status first test: ${page}`);
            page.invokeSomeMethod();
    }
}

输出:

GuiPage object status first test: undefined
Cannot read property 'invokeSomeMethod' of undefined
....a long stacktrace....
GuiPage object status before each:[object Object]

所以,很明显,测试本身似乎是在 beforeEach 调用完成之前调用的。
在量角器配置文件中,我有:

exports.config = {
.....many other non relevant configs....
  onPrepare() {
    browser.ignoreSynchronization = true;
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 240000;
  }
};

我的测试有什么明显的错误吗?

我遇到过类似的情况,很沮丧。我认为这可能取决于您使用的 Jasmine 版本(我认为您会体验到较旧的版本)。

无论如何,我这样做是为了修复它:

// add done call back
beforeEach(async (done: DoneFn) => {
            page = new GuiPage();
            console.log(`GuiPage object status before each:${page}`);
            await page.login();
            // call done to let jasmine know we are done with this function
            done();
        });

希望以上内容能解决问题。