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();
});
希望以上内容能解决问题。
我是 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();
});
希望以上内容能解决问题。