A melhor maneira de teste de unidade ASP.NET MVC métodos de ação que usar BindingHelperExtensions.UpdateFrom?

StackOverflow https://stackoverflow.com/questions/28723

  •  09-06-2019
  •  | 
  •  

Pergunta

Na manipulação de um formulário post tenho algo como

    public ActionResult Insert()
    {
        Order order = new Order();
        BindingHelperExtensions.UpdateFrom(order, this.Request.Form);

        this.orderService.Save(order);

        return this.RedirectToAction("Details", new { id = order.ID });
    }

Eu não estou usando parâmetros explícitos no método de como eu esperava ter de adaptar-se a variável número de campos etc.e um método com mais de 20 parâmetros não é atraente.

Suponho que a minha única opção aqui é mock-up todo o HttpRequest, o equivalente ao que o Rob Conery tem feito.Esta é a melhor prática?Difícil dizer com um quadro que é tão novo.

Também já vi soluções que envolvam a utilização de um ActionFilter, de modo que você pode transformar o método acima assinatura para algo como

[SomeFilter]
public Insert(Contact contact)
Foi útil?

Solução

Agora estou usando ModelBinder de modo que o meu método de ação pode olhar (basicamente) como:

    public ActionResult Insert(Contact contact)
    {

        if (this.ViewData.ModelState.IsValid)
        {
            this.contactService.SaveContact(contact);

            return this.RedirectToAction("Details", new { id = contact.ID });
        }
        else
        {
            return this.RedirectToAction("Create");
        }
    }

Outras dicas

Enrole-o em uma interface e mock.

Use NameValueDeserializer de http://www.codeplex.com/MVCContrib em vez de UpdateFrom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top