javascript - Protractor Jasmine 描述嵌套在 it block 中的 block

标签 javascript angularjs testing jasmine protractor

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

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

我的构造是:

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 block 。我想以某种方式避免每次都运行 beforeEach 的问题,但仍然能够有一个很好分离的测试 block 集。


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

describe("Homepage", function () {

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

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

    });
});

除非你有多个这样的规范,否则这不起作用。 browser.get() 在测试运行之前一个接一个地运行。

最佳答案

将断言分成更小的 it block 绝对是个好主意。 Jasmine 不需要只运行一次的全局设置函数。 所以也许你可以欺骗 beforeEach block 只运行一次设置:

describe("Homepage", function() {
    var pageLoaded = false;

    beforeEach(function() {
        if ( ! pageLoaded) {
            browser.get("/");
            pageLoaded = true;
        }
    });
});

关于javascript - Protractor Jasmine 描述嵌套在 it block 中的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20575085/

相关文章:

javascript - 让模型听嵌套模型和集合的最佳模式?

javascript - 多个无限循环

css - Angular Js Type Ahead 在选择时调用函数

javascript - 使用angularjs在选择框中选择选项

Angular 5如何从组件测试中的下拉列表中获取选定的选项文本值

ruby-on-rails - DRYer 在 factory_girl 中与协会进行测试

javascript - 在 Javascript 中搜索由整数组成的数组并返回包含值的新数组

javascript - Bootstrap 插件导致页面在移动设备上水平滚动

javascript - Angular : How can I transclude an element into a template that uses ng-repeat?

testing - 浏览器测试——是否值得测试多个操作系统?