javascript - 如何对 SAPUI5 控件的 onBeforeRendering 进行单元测试?

标签 javascript unit-testing sapui5

假设我有以下代码:

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/

相关文章:

javascript - 如何从ajax获取准确的错误消息

javascript <音频> : cant update currentTime

linux - 如何在unix中获取数字记录和文件大小

c# - 如何避免或单元测试意外使用具体的单例类型而不是使用 StructureMap 进行抽象

c++ - 使用 GoogleMock 模拟由被测代码创建的实例

javascript - Kendo UI map 中的 MarkerClick 事件

php - 是否可以使用 jQuery 或 PHP 上传数据 URI?

json - UI5 : Dynamically build ListItems from JSON with different Icons

data-binding - 自定义控件的 SAPUI5/OpenUI5 数据绑定(bind)

javascript - 如何使用ajax调用+ javascript将数据从数据库导出到excel