【问题标题】:Protractor Jasmine describe blocks nested within an it blockProtractor Jasmine 描述嵌套在 it 块中的块
【发布时间】:2014-01-01 17:29:01
【问题描述】:

首先,下面的代码似乎可以工作。但是,我还没有看到有人这样做,所以我想知道这是否合法以及我是否错过了不可预见的缺点。

上下文是我正在使用 Protractor 编写 E2E 测试,它使用 Jasmine 样式的 describe/it 块。我的目标是加载一个页面并运行一堆 it 测试块,而无需每次都重新加载该页面(因为它很耗时)。

我的结构是:

describe("Homepage", function () {

    beforeEach(function () {
        browser.get("/"); //loads the page
    });

    it('elements', function () {
        describe('test group', function () {
            it('test 1', function () {
                //run stuff 1
            });

            it('test2', function () {
                //run stuff 2
            });
        })
    });
});

我意识到另一种方法就是这样做:

describe("Homepage", function () {

    beforeEach(function () {
        browser.get("/"); //goes to homepage
    });

    it('elements', function () {
        //run stuff 1
        //run stuff 2

    });
});

但问题是我无法将测试分开,你最终会得到一个大的it 块。我想以某种方式避免每次运行 beforeEach 的问题,但仍然能够很好地分离设置测试块。


顺便说一句,我也试过这个:

describe("Homepage", function () {

    browser.get("/"); //goes to homepage

    it('elements', function () {
        //run stuff 1
        //run stuff 2

    });
});

当你有多个这样的规格时,这不起作用。 browser.get() 在测试运行之前一个接一个地运行。

【问题讨论】:

    标签: javascript angularjs testing jasmine protractor


    【解决方案1】:

    Jasmine2 有 beforeAll() 和 afterAll() 对整个套件运行一次。

    【讨论】:

      【解决方案2】:

      将断言分解成更小的 it 块绝对是一个好主意。 Jasmine 不具备只运行一次的全局设置功能。 所以也许你可以欺骗 beforeEach 块只运行一次设置:

      describe("Homepage", function() {
          var pageLoaded = false;
      
          beforeEach(function() {
              if ( ! pageLoaded) {
                  browser.get("/");
                  pageLoaded = true;
              }
          });
      });
      

      【讨论】:

      • 这是个好主意。让我等一两天再接受,看看其他人是否有任何想法。
      • 我还想为browser.get()这个特定场景添加你也可以使用browser.getCurrentUrl()检查你所在的页面,并在“获取”它之前检查当前页面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多