Frage

ich auf Schloss Rüssel leite, und zu versuchen, Unit-Test eine Controller-Aktion, bei der Validierung meiner DTO eingerichtet ist. Der Controller erbt von SmartDispatcherController. Die Aktion und DTO wie folgt aussehen:


[AccessibleThrough(Verb.Post)]
public void Register([DataBind(KeyReg, Validate = true)] UserRegisterDto dto)
{
    CancelView();
    if (HasValidationError(dto))
    {
        Flash[KeyReg] = dto;
        Errors = GetErrorSummary(dto);
        RedirectToAction(KeyIndex);
    }
    else
    {
        var user = new User { Email = dto.Email };
        // TODO: Need to associate User with an Owning Account
        membership.AddUser(user, dto.Password);
        RedirectToAction(KeyIndex);
    }
}

public class UserRegisterDto
{
    [ValidateNonEmpty]
    [ValidateLength(1, 100)]
    [ValidateEmail]
    public string Email { get; set; }

    [ValidateSameAs("Email")]
    public string EmailConfirm { get; set; }

    [ValidateNonEmpty]
    public string Password { get; set; }

    [ValidateSameAs("Password")]
    public string PasswordConfirm { get; set; }

    // TODO: validate is not empty Guid
    [ValidateNonEmpty]
    public string OwningAccountIdString { get; set; }

    public Guid OwningAccountId
    {
        get { return new Guid(OwningAccountIdString); }
    }

    [ValidateLength(0, 40)]
    public string FirstName { get; set; }

    [ValidateLength(0, 60)]
    public string LastName { get; set; }
}

Der Unit-Test wie folgt aussieht:


[Fact]
public void Register_ShouldPreventInValidRequest()
{
    PrepareController(home, ThorController.KeyPublic, ThorController.KeyHome, HomeController.KeyRegister);

    var dto = new UserRegisterDto { Email = "ff" };
    home.Register(dto);

    Assert.True(Response.WasRedirected);
    Assert.Contains("/public/home/index", Response.RedirectedTo);
    Assert.NotNull(home.Errors);
}

( „home“ ist meine Homecontroller-Instanz im Test; home.Errors hält einen Verweis auf ein ErrorSummary, die in den Flash gesetzt werden sollten, wenn es ein Fehler bei der Überprüfung).

Ich sehe den Debugger denken, dass dto keine Validierungsfehler hat; es sollte klar mehrere Ausfälle haben, die Art und Weise der Test läuft.

Ich habe Joeys Blog-Post auf diesem , aber es sieht aus wie das Schloss Stamm, da dies geschrieben wurde, hat sich weiterentwickelt. Kann jemand etwas Licht, bitte?

War es hilfreich?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top