【发布时间】:2018-12-27 11:19:04
【问题描述】:
我有两个文本框和一个显示结果的跨度。
Date: <input data-bind="value: dateValue"/>
Number: <input data-bind="value: dateValue"/>
Result : <span data-bind="text: calculatedValue">Result Should shown here</span>
KnockoutObservables 用于“日期”和“数字”输入字段。任何数字用户输入“3”,然后计算函数“将 3 天”添加到“输入的日期”。
Knockout Computed 订阅在“calculatedValue”上,即在结果跨度上。
上述功能在应用程序中运行良好,但在赛普拉斯自动化脚本期间,计算方法未正确触发或计算正确。 我在输入值中键入日期和数值。
但是计算结果什么也没显示。
注意:以上是伪代码。语法、绑定和计算逻辑非常好。应用程序运行良好。问题出在赛普拉斯自动化期间。
Cypress 脚本伪代码:-
cy.get("targetDateInput").clear().type("07/08/2018").type("{enter}");
cy.get("targetNumberInput").clear().type("6").type("{enter}");
cy.get("targetCalculatedValueDiv").children("span").should(($span) => {
expect($span[0].innerHTML).to.contain("07/14/2018");
});
但它失败了。
【问题讨论】:
-
您是否尝试在您的
computed中添加日志记录?如果没有,请添加console.log('someString')以确保computed不会触发。请更新您的结果。 -
是的,今天我尝试将 console.log() 放在我的计算函数中,这些函数被调用进行计算,发现当测试失败时它们不会被触发,有时它们会被触发(随机测试是通过)。
-
似乎有一个隐藏的错误导致了您所描述的内容。请将所有代码包装在
try-catch块中,并将异常记录到控制台。我猜你会发现一些错误。
标签: typescript knockout.js cypress