5 votes

Blazor teste la liaison InputDate avec bUnit

J'ai une page Blazor et je veux faire unittesting via bUnit avec xUnit. Je veux changer la valeur d'entrée et vérifier le résultat.

Avec InputText, tout fonctionne bien. Avec InputNumber, je ne peux passer qu'une chaîne de caractères. Si je passe un nombre, la valeur reste la même.

Mon problème avec la liaison InputDate : Je ne peux pas changer la valeur correctement. J'ai essayé :

cut.Find("#date input").Change(myDate.Date);

La valeur reste la même(inchangée).

cut.Find("#date input").Change(myDate.Date.ToString());

ou

cut.Find("#date input").Change(myDate.Date.ToString("dd/MM/yyyy"));

La valeur est invalide, validation-message:Le champ date doit être une date.

Ma page Blazor :

<EditForm Model="this">
    <DataAnnotationsValidator />
    <div id="name">
        <label>@name</label>
        <ValidationMessage For="@(() => this.name)" />
        <InputText @bind-Value="this.name"/>
    </div>
    <div id="date">
        <label>@date</label>
        <ValidationMessage For="@(() => this.date)" />
        <InputDate @bind-Value="this.date" />
    </div>
    <div id="num">
        <label>@num</label>
        <ValidationMessage For="@(() => this.num)" />
        <InputNumber @bind-Value="this.num" max="23" min="0" />
    </div>
</EditForm>
@code{
    private DateTime date = DateTime.Today;
    private string name = "n";
    private int num = 11;
}

et mon UnitTest :

 [Fact]
    public void Test1()
    {
        DateTime myDate = new DateTime(2020, 11, 15, 15, 0, 0);
        string myName = "bbb";
        using var ctx = new TestContext();

        // Act
        var cut = ctx.RenderComponent<BlazorInputDate.Pages.Index>();
        cut.Find("#name input").Change(myName);
        cut.Find("#date input").Change(myDate.Date);
        cut.Find("#num input").Change(myDate.Hour.ToString());

        // Assert
        Assert.Equal(myName, cut.Find("#name label").InnerHtml);
        Assert.Equal(myDate.Hour.ToString(), cut.Find("#num label").InnerHtml);
        Assert.Equal(myDate.ToString(), cut.Find("#date label").InnerHtml);
    }

Comment puis-je tester la liaison InputDate ?

6voto

C'était un mauvais format de date.

        cut.Find("#date input").Change(myDate.Date.ToString("yyyy-MM-dd"));

fonctionne pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X