我写了一个小库,可以直接操作DOM,使用currentTarget
和QStringList text; text << "Iter FIRST" << "Iter SECOND";
for(qint32 i = 0; i < 2; i++)
{
Form2 * form2 = new Form2(); //creating form
connect(this, &MainWindow::SendCurretText, form2,
&Form2::ShowText);//connect to the second form`(textEdit)
emit MainWindow::SendCurretText(text.at(i));
QPushButton *btnShowForm = new QPushButton(this);
btnShowForm->setGeometry(i + 40, i + 100, 50, 50);
connect(btnShowForm, &QPushButton::clicked, this, [=](){ form2->show(); } );
}//end for()
搜索和更改DOM。现在,我正在尝试找出如何对其进行测试。
window
我在这里做错什么了吗,还是我对测试方法完全错了?如果是这样,进行这种测试的正确方法是什么?
在这里,在所谓的e2e测试和单元测试之间,我有些失落,因为在我看来,这似乎介于两者之间。
理想情况下,我想结束对多个浏览器的测试,并获得某种测试范围。但这更像是下一步。现在,我根本无法正常工作。
我知道网络世界正在以多快的速度发展,所以,如果我完全错了,我希望您能指出我今天的正确做法。
更新
在@duxfox提出了一些建议之后,这是我的完整代码,因为使用这种方法,我的库现在缺少事件document
,该事件应该触发其DOM处理。
const jsdom = require('jsdom');
const {JSDOM} = jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
// these two lines do not seem to do anything useful:
global.window = dom.window;
global.document = dom.window.document;
test('can globally access and search the DOM', () => {
// this doesn't work
expect(global.document.querySelectorAll('p').length).toBe(1);
});
答案 0 :(得分:1)
下面是我与mocha/chai/jsdom/enzyme
一起使用的jsdom设置脚本
看起来global.window
应该设置为
dom.window.document.defaultView
而不是
dom.window
完整脚本,其中添加了其他全局属性:
var jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { document } = (new JSDOM('')).window;
global.document = document;
global.window = document.defaultView;
window.console = global.console;
Object.keys(document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
global[property] = document.defaultView[property];
}
});
global.navigator = {
userAgent: 'node.js'
};