提问人:David Thielen 提问时间:11/17/2023 最后编辑:David Thielen 更新时间:11/20/2023 访问量:20
为什么 bUnit 中的 TextEditChange() 突然不起作用
Why is a TextEditChange() in bUnit suddenly not working
问:
这曾经有效,现在不行了。这是一个非常简单的页面。我使用 DevExpress,并且是 .emailTextBox
DxTextBox
这是成功的
var emailTextBox = allTextBoxes.Single(x => x.Instance.InputId == "email");
emailTextBox.TextEditChange("");
button.Click();
var li = renderedComponent.Find("li.validation-message");
Assert.NotNull(li);
Assert.Equal("Your Email is required", li.InnerHtml);
Assert.Equal("", pageModel.Email);
然后,此代码立即跟随 - 并失败。
emailTextBox.TextEditChange("bogus");
button.Click();
li = renderedComponent.Find("li.validation-message");
Assert.NotNull(li);
Assert.Equal("The Email field is not a valid e-mail address.", li.InnerHtml);
Assert.Equal("bogus", pageModel.Email);
问题是:
- 它找到的错误消息是空字段的消息。
pageModel.Email
是 “”。- 在我查看的调试器中,它是“”。
emailTextBox.Text
设置值的方法不对吗?TextEditChange()
DxTextBox
更新:
有时,上面的第二次测试随机通过,但随后类似的下一次测试失败。这些测试假定不仅设置了值,而且 和 随后运行。<input>
<DataAnnotationsValidator/>
<ValidationSummary/>
更新2:
以下作品:
emailTextBox.TextEditChange("bogus");
button.Click();
renderedComponent.Render();
li = renderedComponent.Find("li.validation-message");
Assert.NotNull(li);
Assert.Equal("The Email field is not a valid e-mail address.", li.InnerHtml);
Assert.Equal("bogus", pageModel.Email);
是否需要在 TextEditChange/Click 之后调用?renderedComponent.Render()
答:
0赞
David Thielen
11/20/2023
#1
在这方面,我从bUnit团队那里得到了很多帮助,基本答案是双重的。
首先,我需要将每个 & 测试都设置为单独的单元测试。连续做几个是自找麻烦,因为页面元素都保持不变,只是文本发生了变化。TextEditChange()
Click()
其次,做一个,通常在有超时的时候。因此,单元测试不是通过断言值来测试预期的更改,而是通过抛出异常来测试预期的更改,如果预期的更改未在超时之前呈现。WaitFor
renderedComponent.Find()
emailTextBox.TextEditChange("bogus");
button.Click();
var li = renderedComponent.WaitForElement("li.validation-message", Timeout);
Assert.NotNull(li);
评论