隔离行动和测试

时间:2015-08-27 12:26:48

标签: javascript angularjs jasmine protractor angularjs-e2e

我尝试重构我的代码。我知道,如果我有几个期望,他们应该孤立于'它'。我试着理解我怎么写这个:

describe('my scenario should make', function () {

  var config = browser.params;
  var url = config.listOfReferencesUrl,
      grid,
      numberField;

  it('test1', function () {

    browser.get(url);
    browser.executeScript("icms.go('WEB_INQ_PROC', 'InquiryList', null, 0)");

    grid = psGrid(by.css("table[class='n-grid']"));
    numberField = grid.getQuickFilter(1);
    numberField.click().sendKeys("Hello!");

    since('fail1').expect(numberField.getInputText()).toEqual("");
  });

  it('test2', function () {
    since('fail2').expect(numberField.getInputText()).toEqual("Hello!");
  });

});

这样的事情:

    describe('my scenario should make', function () {

      var config = browser.params;
      var url = config.listOfReferencesUrl,
          grid,
          numberField;

 *********Make this part of code ONES before all tests in spec ****
    browser.get(url);
    browser.executeScript("icms.go('WEB_INQ_PROC', 'InquiryList', null, 0)");

    grid = psGrid(by.css("table[class='n-grid']"));
    numberField = grid.getQuickFilter(1);
    numberField.click().sendKeys("Hello!"); 
*******************************************************************   
      it('test1', function () {
        since('fail1').expect(numberField.getInputText()).toEqual("");
      });

      it('test2', function () {
        since('fail2').expect(numberField.getInputText()).toEqual("Hello!");
      });

    });

也许有人知道我该怎么做?

1 个答案:

答案 0 :(得分:2)

要回答您的问题,如果您想在所有测试之前运行一次代码,请使用Jasmine 2中提供的beforeAll()函数。这是一个示例 -

beforeAll(function(){
    //Write your code here that you need to run once before all specs
});

您可以使用Jasmine中提供的beforeEach()功能每次在测试规范之前运行它。这是一个样本 -

beforeEach(function(){
    //Write your code here that you need to run everytime before each spec
});

如果您在使这些功能正常工作时遇到问题,请将插件更新到最新版本,然后尝试运行它。同时使用 conf.js 文件

中的framework: 'jasmine2'

希望这有帮助。