问题描述
我想用 bunit 测试模态是否打开。问题是,模态没有被渲染。如何用 bunit 打开一个 blazored modal?
在我测试的组件中创建模态:
<div style="display: flex; justify-content: flex-end">
<button class="btn btn-success
btn-lg"
id="openModalButton"
@onclick="CheckOpenModal">
Hinzufügen
</button>
</div>
@code
{
[CascadingParameter] public IModalService Modal { get; set; }
private async Task OpenModalForCreation()
{
List<string> Parametera = new List<string>();
var parameters = new ModalParameters();
parameters.Add(nameof(CreationModal.Parametera),Parametera);
Modal.Show<CreationModal>("Create something",parameters);
}
}
我的测试班:
public class PrivateMachinesCompTest : TestContext
{
public Comptest()
{
Services.AddblazoredModal();
}
[Fact]
public void CheckOpenModal()
{
modalService = new ModalService();
var cut = RenderComponent<ComponentUnderTest>(parameters => parameters
.AddCascadingValue(modalService));
var openModalButton = cut.Find("#openModalButton");
openModalButton.Click();
cut.MarkupMatches("Create something");
}
解决方法
问题在于您没有渲染实际进行渲染的组件。仅仅传入一个 IModalService
是不行的。
我的方法是创建 IModalService
的模拟并断言调用了它的预期方法。