我目前正在对我的团队正在为一个项目构建的一些组件进行单元测试,并且我们已经设置了 BUnit 来使用,因为我们喜欢该包的灵活性,但是当使用 Syncfusion 包测试组件时,我不确定我是否错误地编写了测试,或者我遗漏了什么,但我无法让测试正常工作。
示例
因此,我有一个 Syncfusion Tooltip 组件,我已将其封装到自定义组件中,然后在存储库中使用。
<div class="general-tooltip">
<SfTooltip Content="@Text" CssClass="@CssClass" Height="@Height" ID="@ID" Position="@Position" Target="@Target" Width="@Width" WindowCollision="true" IsSticky="false">
@if (ChildContent != null)
{
@ChildContent
}
else
{
<span class="fa-regular fa-circle-question fa-sm" />
}
</SfTooltip>
</div>
现在,使用 BUnit 我可以在测试期间找到组件
<SfTooltip>
,但无法与其交互。我需要尝试使用 .MouseOver()
事件,以便我可以测试 Syncfusion 渲染的工具提示弹出窗口的内容。有什么想法可以做什么吗?
我的测试如下以及我已经浏览过的链接:
[Fact]
public void CheckSimpleComponentPopupRendersWithCorrectText()
{
// Add Syncfusion Service to Test, in order to render Sf components.
using var testContext = new TestContext();
testContext.Services.AddSyncfusionBlazor();
testContext.Services.AddOptions();
using var cut = testContext.RenderComponent<SimpleTooltip>();
var tooltip = cut.FindComponent<SfTooltip>();
tooltip.MouseOver();
}
如有任何帮助,我们将不胜感激。短暂性脑缺血发作。
答案: 我直接与 Syncfusion 支持人员交谈,他们给了我以下代码片段以便打开工具提示:
var tooltip = testContext.RenderComponent<SfTooltip>(parameters => parameters
.Add(p => p.Target, ".TooltipTarget")
.Add(p => p.ShowTipPointer, false)
.Add(p => p.Content, "Check"));
var rootEle = tooltip.Find(".e-tooltip");
await tooltip.InvokeAsync(async () =>
{
await tooltip.Instance.OpenAsync();
}).ContinueWith(
async (t) =>
{
Assert.True(tooltip.Find(".e-tooltip-wrap").QuerySelector(".e-arrow-tip") == null);
Assert.True(!tooltip.Instance.ShowTipPointer);
});
tooltip.SetParametersAndRender(("ShowTipPointer", true));