我正在使用我的文件在Intern.js的functionalSuite数组中编写功能测试。
我有一个点击URL并检查某些HTML标题元素中的文本的函数。但是,测试运行,声称0/3测试失败,并且网址永远不会被点击。它只是登录并保持在那里。我不知道自己做错了什么。
这是正在运行的功能套件
define([
'intern!object',
'intern/chai!assert',
'intern/dojo/node!fs',
'lib/GlobalUtils.js',
'headtest/headtest.js'
],
function (registerSuite, assert, fs, GlobalUtils, headtest) {
registerSuite(function () {
var GlobalUtils;
var headtest;
var testdata;
var timeout;
var testcases;
testcases =
{
name: 'App Test - headtest',
'Setup the Environment': function () {
var data = fs.readFileSync('headtest/include/test_data.json', 'utf8');
testdata = JSON.parse(data);
timeout = parseInt(testdata.timeout);
GlobalUtils = new GlobalUtils(this.remote);
headtest = new headtest(this.remote);
},
'Log into App': function () {
this.timeout = parseInt(testdata.timeout) * 3;
return GlobalUtils
.login(testdata.username, testdata.password, testdata.sites.mobo_dev, testdata.loginIdentifier)
.then(function (result) {
assert.ok(result, 'Failed to login.')
});
},
'Check Navigation Headers': function () {
this.timeout = parseInt(testdata.timeout);
var navItems = testdata.navItems;
var wasUnmatched = false;
for (var i = 0; i < navItems.length; i++) {
var result = headtest.check_nav_items(navItems[i], testdata.navHrefHeaderPairMappings);
if (result == false)
wasUnmatched = true;
}
return wasUnmatched;
}
};
return testcases;
});
});
这是headtest.js
define(function(require) {
function headtest(remote) {
this.remote = remote;
}
headtest.prototype = {
constructor: headtest,
check_nav_items: function(key, navTupleTable) {
var needle = key.toLowerCase();
var href = navTupleTable[needle][0];
var expect = navTupleTable[needle][1];
var xpath = navTupleTable[needle][2];
var navHeader = this.get_nav_header_text(href, xpath, expect);
return navHeader == expect;
},
get_nav_header_text: function(href, xpath, expect) {
return this.remote
.setFindTimeout(5000)
.findByXpath('//div[@class="sidebar_nav"]//a[@href="'+ href +'"]/..').click().end()
.setFindTimeout(5000)
.findByXpath(xpath).getVisibleText()
.then(function(text) {
console.log(text);
assert.strictEqual(text, expect);
//return text;
});
}
};
return headtest;
});
我在这里做错了吗?我期望在每个for循环迭代中,测试将点击 N URL并检查一些文本元素的存在。但是,没有单击任何URL,也没有进行检查。 console.log(文本)也不打印任何内容。我尝试在然后承诺之后添加额外的错误处理功能,但它仍然没有打印任何内容。
答案 0 :(得分:0)
事实证明,网页真的很慢。代码正在运行。