我们对 Protractor 进行了大量的端到端测试。我们遵循页面对象模式,这有助于我们保持测试干净和module化。我们还有一组帮助函数来帮助我们遵循DRY 原则。
问题:
单个规范可能需要多个页面对象和辅助module。例如:
"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();
});
// ...
});
你可以看到,我们有一个目录遍历在每一个需要声明:./../..
。这是因为我们有一个specs
目录,我们将规范和多个目录按测试中的应用程序功能分组保存在其中。
问题:
在量角器中处理相对路径问题的规范方法是什么?
换句话说,我们希望避免遍历树,向上导入module。相反,从基本应用程序目录下下来会更干净。
尝试和想法:
有一篇关于解决这个问题的好文章:Better local require() paths for Node.js,但我不确定在使用 Protractor 开发测试时推荐哪个选项。
我们也尝试使用require.main
来构造路径,但它指向的是node_modules/protractor
目录而不是我们的应用程序目录。