SAPUI5 OPA5 如何触发 select 事件
SAPUI5 OPA5 How to trigger a select event
下面是测试 sap.m.Select 是否包含名为 xyz 的项目然后 select 是否包含项目的典型操作。
success: function(oSelect) {
var oItems = oSelect.getItems();
$.each(oItems, function(i,v) {
if(oItems[i].getText() === "TestItemNameILikeToSelect") {
oTestOpa5TestItem = oItems[i];
}
});
if(oTestOpa5TestItem !== null) {
oSelect.setSelectedKey(oTestOpa5TestItem.getKey());
oTestOpa5TestItem.$().trigger("tap");
}
},
当我开始测试时 运行 它正确地 select 列表中的正确项目并在浏览器中可见地设置它,但它不会触发后面的附加事件(例如变化="onListItemChanged")。
我的应用程序运行良好,但我找不到为其创建工作测试的方法。
提前致谢
OPA5 有一个 'Action' 接口和两个默认实现,例如'EnterText' 和 'Press'。推荐的用法是在 waitFor()
选项上定义一个 action
块,如下所示:
When.waitFor({
id: "myButton",
actions: new Press()
});
你用的是'old way',但它有一些缺点:
success
块与 XHR 请求不同步,但 action
是。
- 向控件发送 click/tap 事件可能需要选择一些内部元素。想象一下点击导航容器 - 实际上有几个地方可以点击。操作处理这些细节并定义您可以依赖的标准行为。
- 最好将选择逻辑封装在
matchers
块中,甚至将其抽象为自定义匹配器。这样你的 success
块会更干净,你可以在测试的几个地方重复使用匹配器。
查看官方 UI5 演示套件,位于示例 > OPA5 > 代码:使用 OPA5 模拟 UI5 控件上的用户交互,您将能够找到大量关于一般用户交互的 OPA 5 测试示例。对于 select:
opaTest("Should select an item in a sap.m.Select", function(Given, When, Then) {
When.waitFor({
id: "mySelect",
actions: new Press(),
success: function(oSelect) {
this.waitFor({
controlType: "sap.ui.core.Item",
matchers: [
new Ancestor(oSelect),
new Properties({ key: "Germany"})
],
actions: new Press(),
success: function() {
Opa5.assert.strictEqual(oSelect.getSelectedKey(), "Germany", "Selected Germany");
},
errorMessage: "Cannot select Germany from mySelect"
});
},
errorMessage: "Could not find mySelect"
});
});
下面是测试 sap.m.Select 是否包含名为 xyz 的项目然后 select 是否包含项目的典型操作。
success: function(oSelect) {
var oItems = oSelect.getItems();
$.each(oItems, function(i,v) {
if(oItems[i].getText() === "TestItemNameILikeToSelect") {
oTestOpa5TestItem = oItems[i];
}
});
if(oTestOpa5TestItem !== null) {
oSelect.setSelectedKey(oTestOpa5TestItem.getKey());
oTestOpa5TestItem.$().trigger("tap");
}
},
当我开始测试时 运行 它正确地 select 列表中的正确项目并在浏览器中可见地设置它,但它不会触发后面的附加事件(例如变化="onListItemChanged")。 我的应用程序运行良好,但我找不到为其创建工作测试的方法。
提前致谢
OPA5 有一个 'Action' 接口和两个默认实现,例如'EnterText' 和 'Press'。推荐的用法是在 waitFor()
选项上定义一个 action
块,如下所示:
When.waitFor({
id: "myButton",
actions: new Press()
});
你用的是'old way',但它有一些缺点:
success
块与 XHR 请求不同步,但action
是。- 向控件发送 click/tap 事件可能需要选择一些内部元素。想象一下点击导航容器 - 实际上有几个地方可以点击。操作处理这些细节并定义您可以依赖的标准行为。
- 最好将选择逻辑封装在
matchers
块中,甚至将其抽象为自定义匹配器。这样你的success
块会更干净,你可以在测试的几个地方重复使用匹配器。
查看官方 UI5 演示套件,位于示例 > OPA5 > 代码:使用 OPA5 模拟 UI5 控件上的用户交互,您将能够找到大量关于一般用户交互的 OPA 5 测试示例。对于 select:
opaTest("Should select an item in a sap.m.Select", function(Given, When, Then) {
When.waitFor({
id: "mySelect",
actions: new Press(),
success: function(oSelect) {
this.waitFor({
controlType: "sap.ui.core.Item",
matchers: [
new Ancestor(oSelect),
new Properties({ key: "Germany"})
],
actions: new Press(),
success: function() {
Opa5.assert.strictEqual(oSelect.getSelectedKey(), "Germany", "Selected Germany");
},
errorMessage: "Cannot select Germany from mySelect"
});
},
errorMessage: "Could not find mySelect"
});
});