到现在为止,我在测试我的无棱角的网站(我只有JS,没有节点,甚至没有ES6)用茉莉花,因果报应和Travis CI。
我现在想编写功能测试(如果我的词汇量是关闭的,我的意思是情景测试为此我要测试“视觉/ UI”测试)和谷歌指示我量角器。
输入
现在,我会完全不顾特拉维斯CI。 我发现的唯一办法“及”我的网页是用本地路径 browser.get('file:///C:/local/path/to/project/index.html');
现在,我有这个测试
describe('The main page', function () {
beforeEach(function () {
// jasmine.Ajax.install(); // unabled to reuse that
dv.ignoreSynchronization = true;
});
/*
afterEach(function () {
jasmine.Ajax.uninstall();
});
// */
it('should display an error message in the alert if no parameters are provided', function () {
browser.waitForAngularEnabled(false);
get('/index.html'); // edited
browser.sleep(500);
element(by.tagName('ajs-content')).getText().then(console.log);
expect(element(by.className('ajs-content')).getText()).toEqual(new EXCEPTIONS.NoParametersDetectedInURI().description);
});
});
在这里,我得到一个错误Failed: EXCEPTIONS is not defined
,但不像因果报应,如果我包括在protractor.conf.js这样我的源文件
specs: [
'src/lib/**/*.js',
'src/js/**/*.js',
'test/protractor/**/*.spec.js',
],
我得到这样的错误document is not defined
,我不认为我应该在所有的,因为进口这些index.html
“托管”(甚至不知道,我的意思是我使用的是本地的,绝对的,路径...我被这句话对硒的webdriver是什么进口所有这些为它自己的使用(我可以看到它的工作多亏了混淆) console.log
)。
我想,以使用使用( 进口 )我自己的代码EXCEPTIONS
对象,而不是硬编码toEqual("<some error message that I should never ever update in the exception.js file>")
但是,因为我无论使用节点或ES6,我从来没有一次有某种module.export
。
正如你所看到的,我的进口也不是绝对必要的,但感觉“更清洁”的比较对象的常量,而不是一个字符串重复。 而且,也许,这些UI测试意思是“硬编码”,但我仍然在试图找到一种方式来导入文件在“香草JS”还挺方式。 如果它并不意味着,就这样吧。
阿贾克斯嘲讽
我需要拦截Ajax请求,并模拟反应,但jasmine.Ajax is undefined
。 我完全可以在我的“常规”测试(茉莉花+噶)来使用它,所以我想知道如果我应该安装其他NPM-包,比如量角器,HTTP客户端的情况下,或者如果有一个特殊的配置需要使用jasmine.Ajax
。
特拉维斯
最后,我是比较肯定的是,使用绝对(窗口)路径不会与特拉维斯CI工作,并在此基础上SO问题 ,我更新了我的代码,试图达到index.html
使用相对路径使用global.basePath = __dirname;
并使用browser.get(global.basePath + '/index.html');
(也试图与'\\'
,最初的file:///
等等......但是,如果我做的页面睡了几秒钟,我总是在basePath
,不同于当我用绝对的)。
我知道用“/”代替“\”,即使从字面上有完全相同的字符串时,我对自己键入这些不会是最终“亲属”路径,而是一个“动态”的绝对路径,但是, :
let pagePath = global.indexPath.replace(/\\/g, "/");
console.log("trying to get", pagePath);
browser.get(basePath);
browser.sleep(5000);
你一直面临这样做呢? 将'file:///C:/local/path/to/project/index.html'
自动“解析”到曾经在特拉维斯运行正确的路径? 我如何使用相对路径?
我应该每个标题分成一个问题吗?
编辑:
exception.js
样品。 他们基本上构造对于其中的错误description
属性始终定义。 我知道我忘了什么事,当我张贴AHAH
let EXCEPTIONS = {
DefaultException: function(_type, _description, _msg) {
this.type = _type;
this.description = _description;
this.message = _msg || undefined;
},
NoParametersDetectedInURI: function (msg) {
EXCEPTIONS.DefaultException.call(this,
"NoParametersDetectedInURI",
"No URI parameters detected",
msg);
},
.
.
.
};
编辑2:
回答的相对路径的一部分(虽然还没有上特拉维斯测试过)。 我必须设置`的baseUrl:
exports.config = {
baseUrl: 'file:///' + __dirname,
.
.
}
在配置文件中,然后get('/index.html');
在测试中。