Protractor 中有 before() 函数吗?
Posted
技术标签:
【中文标题】Protractor 中有 before() 函数吗?【英文标题】:Is there a before() function in Protractor? 【发布时间】:2015-08-30 11:18:51 【问题描述】:我知道我目前正在使用一个 beforeEach() 函数。
但是,我希望能够为我的所有父级“描述”而不是其中的“it”函数运行 before 函数。
例如,我的测试看起来像这样(在函数执行之前的函数前面有一个 x):
beforeEach: login/out stuffs
x describe: create first case
x it: make selections
x it: add details
x it: change confidentiality settings
x it: etc
x describe: create second case
x it: make selections
x it: add details
x it: change confidentiality settings
x it: etc
下面是我希望我的测试看起来的样子(在我希望之前执行的函数前面有一个 x):
beforeEach: login/out stuffs
x describe: create first case
it: make selections
it: add details
it: change confidentiality settings
it: etc
x describe: create second case
it: make selections
it: add details
it: change confidentiality settings
it: etc
请提出一些解决方案。
【问题讨论】:
在您的第一个代码块中,describe 调用旁边有x
s。对吗,当前beforeEach
在it
之前执行并且 在describe
之前执行?
其实describe函数下除了持有it函数什么都没有发生,所以我猜没有,只是为了it's。
【参考方案1】:
我对这个问题的解决方案是将两个描述块拆分为 2 个单独的规范文件。无论如何,我认为这更有意义,因为每个测试都有不同的条件需要满足,并且拥有额外的规范文件并不麻烦。
【讨论】:
【参考方案2】:您要查找的函数的名称是beforeAll()
。您可以在每个描述中添加一个 before all。确保您使用的是 Jasmine 2。
【讨论】:
我最初使用的是 beforeAll() 并且当时或现在都没有成功。我想我已经找到了一个解决方案,如果我能做到,我想我会发布它。【参考方案3】:据我了解,为每个it
从头开始运行测试是一种意图设计选择。否则,每个它都可能进行状态更改,从而导致兄弟失败。
【讨论】:
我在某处读到,Karma 曾经使用只在父级别上运行的 before 函数,然后他们添加了另一个函数来覆盖层次结构。因此,我们必须有一种方法可以强制量角器执行此操作,即使它可能不是严格“可能”的。以上是关于Protractor 中有 before() 函数吗?的主要内容,如果未能解决你的问题,请参考以下文章
object不是构造函数Protractor Javascript
mocha before() 中的异步函数总是在 it() 规范之前完成?
为啥传递的函数是不是带参数对 Mocha 的 `before()` 很重要?
Protractor / Javascript - 将函数传递给expect子句的值的参考语法