javascript - SAPUI5 使用 QuuniT 测试过滤的问题
问题描述
我正在尝试使用 QUnit 在控制器中的表上测试过滤。现在我在尝试调用 onApplyFilter 函数时遇到了一些问题。我在重建这个发送到 onApplyFilter 的事件时遇到问题,特别是在模拟表时,它会给我带来各种未定义这些对象的错误,所以我不确定这是否是正确的方法。
我还尝试使用新的 sap.m.Table(...) 构建一个新表。但是这里 onApplyFilter 中的 .getBinding() 调用返回 null。
function createTable() {
var oTable = new sap.m.Table("idTestTable", {
inset: true,
headerText: "TestTable",
headerDesign: sap.m.ListHeaderDesign.Standard,
mode: sap.m.ListMode.None,
includeItemInSelection: false,
});
var col1 = new sap.m.Column("col1", { header: new sap.m.Label({ text: "CreatedBy" }) });
oTable.addColumn(col1);
var col2 = new sap.m.Column("col2", { header: new sap.m.Label({ text: "InstanceID" }) });
oTable.addColumn(col2);
var col3 = new sap.m.Column("col3", { header: new sap.m.Label({ text: "CREATED_BY_ID" }) });
oTable.addColumn(col3);
var col4 = new sap.m.Column("col4", { header: new sap.m.Label({ text: "REQUESTED_BY_NAME" }) });
oTable.addColumn(col4);
var col5 = new sap.m.Column("col5", { header: new sap.m.Label({ text: "OPERATION_NAME" }) });
oTable.addColumn(col5);
var colItems = new sap.m.ColumnListItem("colItems", { type: "Active" });
oTable.bindAggregation("items", "{DatabaseModel>/results}", colItems);
var txtNAME = new sap.m.Text("txtNAME", { text: "{CreatedBy}" });
colItems.addCell(txtNAME);
var txtNAME2 = new sap.m.Text("txtNAME2", { text: "{InstanceID}" });
colItems.addCell(txtNAME2);
var txtNAME3 = new sap.m.Text("txtNAME3", { text: "{CREATED_BY_ID}" });
colItems.addCell(txtNAME3);
var txtNAME4 = new sap.m.Text("txtNAME4", { text: "{REQUESTED_BY_NAME}" });
colItems.addCell(txtNAME4);
var txtNAME5 = new sap.m.Text("txtNAME5", { text: "{OPERATION_NAME}" });
colItems.addCell(txtNAME5);
return oTable;
}
无论如何,这是在我的桌子上测试过滤的有用方法还是我可以尝试其他方法?如果不是,我如何创建/实例化一个表来成功测试过滤?
这是视图的表格和控制器的功能。如前所述,该表来自 sap.m
<Table
id="idOwnOpenTasksTable"
items="{path:'DatabaseModel>/results'}"
noDataText="{masterView>/tableNoDataText}"
busyIndicatorDelay="{masterView>/tableBusyDelay}"
growing="true"
growingScrollToLoad="true"
updateFinished="onUpdateFinished">
<headerToolbar>
<Toolbar>
<content>
<ToolbarSpacer />
<SearchField placeholder="Filter" value="{DisplayModel>/sFilter}" showSearchButton="true" visible="true" width="auto" search="onApplyFilter">
</SearchField>
</content>
</Toolbar>
</headerToolbar>
<columns>
<Column width="auto">
<Text text="{i18n>description}" />
</Column>
<Column width="8rem" minScreenWidth="Phone" hAlign="End" demandPopin="true">
<Text text="{i18n>id}" />
</Column>
<Column width="8rem" minScreenWidth="Phone" hAlign="End" demandPopin="true">
<Text text="{i18n>request}" />
</Column>
<Column width="8rem" minScreenWidth="Desktop" hAlign="End" demandPopin="true">
<Text text="{i18n>operation}" />
</Column>
<Column width="8rem" minScreenWidth="Desktop" hAlign="End" demandPopin="true">
<Text text="{i18n>requested}" />
</Column>
<Column width="8rem" minScreenWidth="Desktop" hAlign="End" demandPopin="true">
<Text text="{i18n>expiryDate}" />
</Column>
</columns>
<items>
<ColumnListItem type="Navigation" vAlign="Middle" press="onSelectRow">
<cells>
<ObjectIdentifier title="{DatabaseModel>CreatedBy}" />
<ObjectAttribute text="{DatabaseModel>CREATED_BY_ID}" />
<ObjectAttribute text="{DatabaseModel>REQUESTED_BY_NAME}" />
<ObjectAttribute text="{DatabaseModel>OPERATION_NAME}" />
<ObjectAttribute text="{
path: 'DatabaseModel>CreatedOn',
formatter: '.Formatter.convertUnixTimestamp'
}" />
<ObjectAttribute text="{
path: 'DatabaseModel>ExpiryDate',
formatter: '.Formatter.convertUnixTimestamp'
}" />
</cells>
</ColumnListItem>
</items>
</Table>
onApplyFilter: function(oEvent){
var sQuery = oEvent.getParameter("query");
var oFilter = new Filter([
new Filter("CreatedBy", FilterOperator.Contains, sQuery),
new Filter("InstanceID", FilterOperator.Contains, sQuery),
new Filter("CREATED_BY_ID", FilterOperator.EQ, sQuery),
new Filter("REQUESTED_BY_NAME", FilterOperator.Contains, sQuery),
new Filter("OPERATION_NAME", FilterOperator.Contains, sQuery)
]);
var oTable = oEvent.getSource().getParent().getParent();
oTable.getBinding("items").filter(oFilter, "Application");
}
解决方案
推荐阅读
- php - 从 PHP 中失败的 curl 响应中获取状态文本
- node.js - EHOSTUNREACH - 尝试通过 localhost 向后端 API 发出请求时出错
- vba - 在 VBA 中使用数组元素计算计算值平均值的公式
- c - 为什么缺少一些 libhandy 库函数?
- python-3.x - 在 elif 正文中将数组元素转换为整数导致错误
- angular - 如何根据另一个 observable 的结果订阅(或不订阅!)一个 observable
- javascript - 如何在打字稿中访问枚举?给出错误“元素隐式具有任何类型,因为索引表达式不是数字类型”
- ajax - 如何在laravel中有正常查询数据的页面中使用AJAX
- java - 如何加速非常大的集合的延迟加载
- visual-studio - Visual Studio VTR8.0 中的 CMake 构建错误