当函数没有 return 值时,使用页面对象模型是更好地实践 return 承诺还是在函数中使用 async/await
Using the Page Object Model is it better practice to return a promise or to use async/await in the function when the function does not return a value
希望就这种情况下的最佳做法获得一些反馈
(Protractor 测试框架使用带有 async/await 而不是 SELENIUM_PROMISE_MANAGER 的页面对象模型).
假设我有一个名为 setUsername
的函数,它只是在一个字段中设置用户名。我想知道使用 async/await 来等待函数本身的动作或 return 动作是更好的做法。无论哪种方式,无论何时调用函数,都需要等待。
选项1
this.setUsername = async function (username) {
await usernameInput.sendKeys(username);
}
选项2
this.setUsername = function (username) {
return usernameInput.sendKeys(username);
}
调用任一选项的语法
await loginPO.setUsername('admin');
推理: 如果我选择 option1,那么我将声明 await 两次(在函数中和调用时),这似乎是不必要的,但该函数的行为更符合我的预期.如果我选择选项 2,那么 await 只使用一次,但是 return 函数中的任何东西似乎都是错误的,我只需要设置一个值而不需要返回任何东西。
在我看来,最好使用 选项 1,您可以在其中明确显示您的函数是 async
,因为有一些操作需要等待。
因此,每个人都会明白使用它需要函数来解决承诺。
此外,如果您的方法将有两个或多个需要等待的操作,那么,您将必须使您的函数 async
.
希望就这种情况下的最佳做法获得一些反馈 (Protractor 测试框架使用带有 async/await 而不是 SELENIUM_PROMISE_MANAGER 的页面对象模型).
假设我有一个名为 setUsername
的函数,它只是在一个字段中设置用户名。我想知道使用 async/await 来等待函数本身的动作或 return 动作是更好的做法。无论哪种方式,无论何时调用函数,都需要等待。
选项1
this.setUsername = async function (username) {
await usernameInput.sendKeys(username);
}
选项2
this.setUsername = function (username) {
return usernameInput.sendKeys(username);
}
调用任一选项的语法
await loginPO.setUsername('admin');
推理: 如果我选择 option1,那么我将声明 await 两次(在函数中和调用时),这似乎是不必要的,但该函数的行为更符合我的预期.如果我选择选项 2,那么 await 只使用一次,但是 return 函数中的任何东西似乎都是错误的,我只需要设置一个值而不需要返回任何东西。
在我看来,最好使用 选项 1,您可以在其中明确显示您的函数是 async
,因为有一些操作需要等待。
因此,每个人都会明白使用它需要函数来解决承诺。
此外,如果您的方法将有两个或多个需要等待的操作,那么,您将必须使您的函数 async
.