작동하지 않습니다 컨트롤러는 괜찮아. 그러나 실생활에서 테스트는 좀 더 복잡하고 서비스 및 사용자 정의 테스트 구성을 추가해야합니다. 내 원래 프로젝트의 시작 클래스에서 상속 TestStartup를 만드는이 작업을 수행하기 위해.NET의 핵심 RC2가 아닌 사소한 통합 테스트는
: 당신은 그래서 지금은 내을 사용하는 빌더를 변경, 기본 클래스 만 위임을 볼 수 있듯이
public class TestStartup : Startup
{
public TestStartup(IHostingEnvironment env) : base(env)
{
}
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
}
public override void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
base.Configure(app, env, loggerFactory);
}
}
테스트 시작 코드 :
protected BaseResourceTests(string resourceVersion)
{
var hostBulider = new WebHostBuilder()
.UseStartup<TestStartup>();
_server = new TestServer(hostBulider);
HttpClient = _server.CreateClient();
HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(resourceVersion));
HttpClient.BaseAddress = new Uri("http://localhost:5000");
}
그리고 이제는 HTTP NotFound 예외로 테스트가 실패합니다. 디버깅 할 때 컨트롤러의 동작이 테스트 코드에 더 이상 부딪치지 않는 것으로 나타났습니다.
내 생각 엔 시동 파일이 다른 어셈블리와 컨트롤러 인 경우 mvc가 경로를 감지하지 않는다는 것입니다. 어떻게이 문제를 해결할 수 있습니까?
'_server = new TestServer (hostBulider);'로 변경하십시오. _server = TestServer.CreateBuilder(). UseStartup(); –
Set
TestServer 클래스에 정적 메서드 CreateBuilder가 없습니다. 원래 rc1에 있었던 것 같아요 – Calin