Como testar um serviço WebApi?

sou muito novo no WebApi e tenho lido informações sobre ele, mas não sei como começar a minha aplicação.

Já tive um projecto com muitos serviços da WFC com o. Net 3.5. Então, eu atualizei meu projeto para 4.5.1. Depois criei um controlador com o Assistente Visual Studio 2012. Então, quando o controlador é criado, eu vejo uma classe como um modelo com os métodos get, post, put, delete. Então eu coloco meu método de post e finalmente eu quero testar o serviço com um HttpClient.

tentei aplicar a solução a verde do seguinte fórum: Como publicar um valor xml na api web?

Vou receber um texto XML com a estrutura de um modelo de contrato.

Executei o meu projecto num servidor de desenvolvimento Visual Studio.

Mas tenho problemas com a URL para testar o meu serviço.

Vi muitas páginas onde as pessoas fazem algo assim.http://localhost:port/api/contract .Mas ainda não sei como é. obra. Então, como posso fazer para testar o meu serviço? Qual é o meu caminho ou url para testar o meu serviço?

Author: Maximus Decimus, 2015-06-04

1 answers

WebApi, como MVC, é tudo baseado no roteamento. A rota padrão é /api/{controller}/{id} (que pode, claro, ser alterada). Isso é geralmente encontrado no Arquivo ~/App_Start/WebApiConfig.cs de um novo projeto, mas dado que você está migrando, você não tem isso mais provável. Então, para o Transferir, pode modificar o seu {[5] } para incluir:
GlobalConfiguration.Configure(WebApiConfig.Register);

Então, defina essa classe:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Se criasse um controlador TestController e quisesse fazer um pedido POST à instância a correr localmente, teria acesso http://localhost:12345/api/Test/ (com o verbo apropriado). 12345 seria a porta local que o Visual Studio está a usar para hospedar o seu serviço (e pode ser encontrada ao ver as propriedades do projecto, navegando depois para a página "Web").

Dito isto, os testes são provavelmente mais bem realizados no projecto (sem fazer uma chamada externa). Existem vários posts sobre o assunto, mas geralmente se resumem a algo como o seguinte:
[TestMethod]
public void Should_Return_Single_Product()
{
    // Arrange
    var repo = new FakeRepository<Widget>();
    var controller = new WidgetController(repo);
    var expected = repo.Find(1);

   // Act
   var actual = controller.GetWidget(1) as OkNegotiatedContentResult<Widget>;

   // Assert
   Assert.IsNotNull(actual);
   Assert.AreEqual(expected.Id, actual.Content.Id);
}
 5
Author: Brad Christie, 2015-06-04 15:19:01