相关疑难解决方法(0)

使用需要相对路径的require

我们对Protractor进行了一系列相当大的端到端测试.我们遵循Page Object模式,这有助于我们保持测试的清洁和模块化.我们还有一套辅助功能,可以帮助我们遵循DRY原则.

问题:

单个规范可能需要多个页面对象和辅助模块.例如:

"use strict";

var helpers = require("./../../helpers/helpers.js");
var localStoragePage = require("./../../helpers/localStorage.js");
var sessionStoragePage = require("./../../helpers/sessionStorage.js");

var loginPage = require("./../../po/login.po.js");
var headerPage = require("./../../po/header.po.js");
var queuePage = require("./../../po/queue.po.js");

describe("Login functionality", function () {

    beforeEach(function () {
        browser.get("/#login");

        localStoragePage.clear();
    });

    // ...

});
Run Code Online (Sandbox Code Playgroud)

您可以看到我们在每个require语句中都有遍历目录:./../...这是因为我们有一个specs目录,我们将规范和多个目录保存在由测试中的应用程序功能分组.

问题:

在Protractor中处理相对路径问题的规范方法是什么?

换句话说,我们想避免遍历树,进入导入模块.从基础应用程序目录下来会更加清晰.


尝试和想法:

有一篇关于解决这个问题的好文章:Node.js的本地require()路径更好,但我不确定在使用Protractor开发测试时哪一个选项是推荐的.

我们也尝试使用require.main构造路径,但它指向node_modules/protractor目录而不是我们的应用程序目录.

javascript testing angularjs protractor

51
推荐指数
3
解决办法
2万
查看次数

量角器设置全局变量

我试图在量角器上设置一个全局变量,用于所有描述块.

var glob = 'test';

describe('glob test', function () {
    it('should set glob', function () {
        browser.get('http://example.com/test');
        browser.executeScript(function () {
            window.glob = glob;
        });
    });    
});
Run Code Online (Sandbox Code Playgroud)

但这会返回以下错误:

Message:
[firefox #2]      UnknownError: glob is not defined
Run Code Online (Sandbox Code Playgroud)

我也看了这个问题:量角器angularJS全局变量

所以我试图以这种方式在conf.js中设置变量glob:

exports.config = {
  ...,
  onPrepare: function () {
      global.glob = 'test';
  }
};
Run Code Online (Sandbox Code Playgroud)

仍然有同样的错误.

如何在量角器测试中添加正确的全局变量?

javascript angularjs protractor

21
推荐指数
2
解决办法
3万
查看次数

标签 统计

angularjs ×2

javascript ×2

protractor ×2

testing ×1