Reputation: 2243
I have a Blazor project with Radzen, and am using bUnit to test my components.
I'm encountering an issue with testing a component that has a DialogService
injection. When this line in my test runs
var cut = Render(@<DefaultProcessingTemplate ClientProcessor="mockDatabaseProcessing.Object" />);
I get the following error:
System.InvalidOperationException : Cannot provide a value for property 'DialogService' on type 'ClientProcessing.BlazorServer.Components.Shared.DefaultProcessingTemplate'. There is no registered service of type 'Radzen.DialogService'.
How do I solve this problem? I tried adding a registration for DialogService
in program.cs but that didn't change the outcome of the test.
DefaultProcessingTemplate.razor
@using ClientProcessing.Library
@inject IJSRuntime JsRuntime
@inject DialogService DialogService
@if (ClientProcessor as IDataProcessing is not null)
{
<RadzenRow>
<RadzenHeading Size="H2" Text="Reporting"></RadzenHeading>
</RadzenRow>
<RadzenRow Gap=".5rem" class="rz-mb-6">
<RadzenButton Click="OpenReportingRunDialog" ButtonStyle="ButtonStyle.Primary" Text="Run"></RadzenButton>
</RadzenRow>
}
else
{
// code ...
}
@code {
[Parameter]
public IDataProcessing ClientProcessor { get; set; }
protected override void OnInitialized()
{
// ... code
}
private async Task OpenReportingRunDialog()
{
var parameters = new Dictionary<string, object>()
{
{ "CommDate", ClientProcessor.GetCurrMo() },
{ "Reporting", ClientProcessor }
};
var dialogOptions = new DialogOptions { CloseDialogOnEsc = true, Width = "900px" };
await DialogService.OpenAsync<ReportingRun>("Run", parameters, dialogOptions);
}
}
DefaultProcessingTemplateTests.razor
@using ClientProcessing.BlazorServer.Components.Shared
@using ClientProcessing.Library
@using Moq
@using Radzen.Blazor
@inherits TestContext
@code {
[Fact]
public void ReportingSectionHeadingExists()
{
Mock<IDataProcessing> mockDatabaseProcessing = new Mock<IDataProcessing>();
var cut = Render(@<DefaultProcessingTemplate ClientProcessor="mockDatabaseProcessing.Object" />);
var reportingHeading = cut.FindComponent<RadzenHeading>();
Assert.Equal("Reporting", reportingHeading.Instance.Text);
}
}
Upvotes: 0
Views: 91