假设我有以下代码:
var title = new sap.m.Title();
title.addEventDelegate({
onBeforeRendering: jQuery.proxy(function () {
title.setText(this._createTitleText());
}, this)
});
仅在渲染之前将文本设置为标题
。
问题是如何对其进行单元测试?
据我了解 SAPUI5 框架将触发此事件,然后我应该能够附加到它并验证标题文本是否正确,但如何做到这一点以及这是正确的方法吗?
这就是我正在尝试的,但至少我没有从我的控件中获取任何文本,而且我不清楚应该将哪些数据传递给此方法。
title.attachBeforeRendering("data", function (oEvent) {
var text = title.getText();
});
最佳答案
我发现了以下方法:
title.addEventDelegate({
onBeforeRendering: jQuery.proxy(function () {
assert.equal(title.getText(), expectedTitle, "Title has correct text");
}, this)
});
但是,这还不够,因为 onBeforeRendering
将在测试后发生,这意味着它取决于时间,因此不确定是否会发生。但有一种方法可以确保这一点:
在测试结束时我们应该调用:
return new Promise(function (resolve, reject) {
setTimeout(function () {
QUnit.start();
}, 100);
});
这将涵盖我们的案例并继续执行另一个单元测试。
关于javascript - 如何对 SAPUI5 控件的 onBeforeRendering 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42946310/