Estou tentando escrever alguns testes de unidade para o meu ApiController e enfrentou alguns problemas. Existe um bom método de extensão chamado Request.CreateResponse que ajuda muito na geração de resposta.
public HttpResponseMessage Post(Product product)
{
var createdProduct = repo.Add(product);
return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct);
}
Existe alguma maneira de zombar do CreateResponse sem usar zombarias parciais ou usar diretamente o "novo HttpResponseMessage (...)"?
CreateResponse
? Por que não afirmar nas propriedadesHttpResponseMessage
Content
e retornadosStatusCode
que os valores corretos estão definidos?Respostas:
Outra maneira de resolver isso é fazer o seguinte:
Se você estiver atualizando para o webapi 5.0, precisará alterar isso para:
A razão pela qual você precisa fazer isso é porque você deve ter
Request
preenchido o controlador, caso contrário, os métodos de extensãoRequest
não funcionarão. Você também deve ter umHttpConfiguration
conjunto no Pedido, caso contrário, o roteamento e outras partes do pipeline não funcionarão corretamente.fonte
Você pode configurar o objeto do controlador para testabilidade como este:
Copiado da abrangente postagem de blog de Peter Provost na Unit Testing ASP.NET Web API .
fonte
Para a API da Web 2, você pode simplesmente adicionar
Igual a
Veja aqui para mais informações.
fonte
WebAPI 1 aqui com um problema semelhante usando o VB.
Eu consegui respostas híbridas aqui para que isso funcionasse tão simples quanto isto:
Apenas postando caso ajude alguém.
fonte
Na sua classe de teste, crie uma instância da classe do controlador. por exemplo
var customerController= new CustomerController();
fonte