如何用 bunit 打开一个华丽的模态?
How to open a blazored modal with bunit?
我想用 bunit 测试模态是否打开。问题是,模态没有被渲染。如何用 bunit 打开一个华丽的模态?
我的测试组件中的模态创建:
<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
的模拟,并断言调用了预期的方法。
我想用 bunit 测试模态是否打开。问题是,模态没有被渲染。如何用 bunit 打开一个华丽的模态?
我的测试组件中的模态创建:
<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
的模拟,并断言调用了预期的方法。