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 调用旁边有xs。对吗,当前beforeEachit 之前执行并且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子句的值的参考语法

如何在 Protractor 中创建和操作 Promise?

timer misc