以下是我们的规格文件,无需使用async关键字即可正常运行。
但是,当我们尝试将现有的量角器框架从控制流更改为异步时,请等待其在describe和it块中均显示上述错误。即使我们尝试使用'async()=>'。真令人沮丧
答案 0 :(得分:1)
更详细的解释是describe
块仅用于分组。并且async
函数是“用于返回的诺言链的语法糖”,并且describe
块通常不支持(如等待解决)返回的诺言。
另外,最好将所有require
声明放在这些describe
块之外。我将像下面那样重组该代码,然后重试:
const projectsPage = require('../pages/Projects_Page.js');
const commonFunctions = require('../utils/CommonFunctions.js');
describe('Projects CRUD', () => {
it('Rename Project - Duplicate name check', async () => {
//your code here
});
});
答案 1 :(得分:0)
像Jasmine,Mocha这样的测试框架包含这些关键字,例如describe,before,beforeEach等。测试框架具有内置的执行顺序这些块的定义。 对于describe和It块,函数定义为
export const describe: {
/**
* Registers a new test suite.
* @param name The suite name.
* @param fn The suite function, or {@code undefined} to define a pending test suite.
*/
(name: string, fn: Function): void;
export const it: {
/**
* Add a test to the current suite.
* @param name The test name.
* @param fn The test function, or {@code undefined} to define a pending test case.
*/
(name: string, fn: Function): void;
表示描述,其块采用两个参数。名称和功能。在describe的情况下,您不需要使用async / await,因为此函数在内部使用“ return”。因此它将在描述块内等待整个事情完成。换句话说,如果您仅在describe块中编写async,那么您将不得不在不需要的describe函数下编写await。
在It块的情况下,您将必须像异步function(){}一样编写,因为您必须等待在它下面编写的步骤。请参考以下示例。
describe('angularjs homepage', function() {
it('should greet the named user', async function() {
await browser.get('http://www.angularjs.org');
await element(by.model('yourName')).sendKeys('Julie');
var greeting = element(by.binding('yourName'));
expect(await greeting.getText()).toEqual('Hello Julie!');
});
注意:如果函数不返回Promise,则不需要使用await。这没用。在上面的代码片段中,元素之前没有等待。这意味着element不返回promise,它仅返回ElementFinder的对象。