2016-01-19 54 views
1

我正在构建一个新的应用程序,使用ASP.NET 5与MVC6并尝试建立一个基于this描述的测试项目。asp.net 5 vnext集成测试和视图

它正常工作的API调用(返回ObjectResults),但当我点击返回视图的响应,我得到404响应。

我使用该项目的Unter测试启动类,代码是一样的教程:

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 

    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     app.UseIISPlatformHandler(); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseDatabaseErrorPage(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 


     } 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

    } 

    public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
} 

[Route("/")] 
public class HomeController : Controller 
{ 

    [HttpGet] 
    [AllowAnonymous] 
    [Route("/")] 
    public IActionResult Index() 
    { 
     return View(); 
    } 

    [HttpGet] 
    [AllowAnonymous] 
    [Route("/ok")] 
    public IActionResult Ok() 
    { 
     return new ObjectResult("OK"); 
    } 

} 

[TestClass] 
public class HomeTests 
{ 
    private readonly HttpClient _client; 

    public HomeTests() 
    { 
     var server = new TestServer(TestServer.CreateBuilder() 
      .UseStartup<Startup>()); 
     _client = server.CreateClient(); 
    } 

    [TestMethod] 
    public async Task Index_returns_page() 
    { 
     var response = await _client.GetAsync("/"); 
     response.EnsureSuccessStatusCode(); 

     var responseString = await response.Content.ReadAsStringAsync(); 
     //Assert.Equals("OK", responseString); 
    } 

    [TestMethod] 
    public async Task Index_OK_returns_OK() 
    { 
     var response = await _client.GetAsync("/ok"); 
     response.EnsureSuccessStatusCode(); 

     var responseString = await response.Content.ReadAsStringAsync(); 
     Assert.AreEqual("OK", responseString); 
    } 
} 

当然,在浏览器中的一切工作正常。

+1

您可以分享您在UseStartup <>中使用的'Startup'的代码吗? –

+0

我已经添加了完整的启动和测试类代码 –

+0

控制器是否正确?它在浏览器中工作吗?你尝试调试你的控制器吗? – poke

回答

0

因为IApplicationEnvironment.ApplicationBasePath设置为测试项目的目录,所以无法找到您的视图。你应该用你自己的那个点来替换你正在测试的项目的IApplicationEnvironment实现。在RC2中这会变得更容易一些。

+0

谢谢!它现在按预期工作 –

+1

这是一个演示解决方案的简单项目:https://github.com/mdymel/AspNetCoreRazorTests –