내 통합 테스트에서 테스트중인 웹 API 프로젝트에서 생성하는 것과 동일한 SimpleInjector.Container를 사용하고 있습니다.container.RegisterWebApiControllers (GlobalConfiguration.Configuration)에 의해 InvalidOperationException이 발생합니다.
는하지만 구성 루트 클래스에서이 라인 : 모든 것이 잘 작동을 주석 한 후 웹 응용 프로그램 자체와 테스트를 모두
System.TypeInitializationException : The type initializer for 'MyProject.Api.Test.Integration.HttpClientFactory' threw an exception.
---- System.InvalidOperationException : This method cannot be called during the application's pre-start initialization phase.
Result StackTrace:
at MyProject.Api.Test.Integration.HttpClientFactory.Create()
at MyProject.Api.Test.Integration.Controllers.ProductControllerIntegrationTest.<GetProductBarcode_Should_Return_Status_BadRequest_When_Barcode_Is_Empty>d__0.MoveNext() in d:\Projects\My\MyProject.Api.Test.Integration\Controllers\ProductControllerIntegrationTest.cs:line 26
----- Inner Stack Trace -----
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.GetReferencedAssemblies()
at System.Web.Http.WebHost.WebHostAssembliesResolver.System.Web.Http.Dispatcher.IAssembliesResolver.GetAssemblies()
at System.Web.Http.Dispatcher.DefaultHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)
at System.Web.Http.WebHost.WebHostHttpControllerTypeResolver.GetControllerTypes(IAssembliesResolver assembliesResolver)
at SimpleInjector.SimpleInjectorWebApiExtensions.GetControllerTypesFromConfiguration(HttpConfiguration configuration)
at SimpleInjector.SimpleInjectorWebApiExtensions.RegisterWebApiControllers(Container container, HttpConfiguration configuration)
at MyProject.Api.ContainerConfig.RegisterTypes(Container container) in d:\Projects\My\MyProject.Api\App_Start\ContainerConfig.cs:line 128
at MyProject.Api.ContainerConfig.CreateWebApiContainer() in d:\Projects\My\MyProject.Api\App_Start\ContainerConfig.cs:line 63
at MyProject.Api.Test.Integration.HttpClientFactory..cctor() in d:\Projects\My\MyProject.Api.Test.Integration\HttpClientFactory.cs:line 17
:
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
는 예외가 발생합니다.
그래서 질문은 :
- 제외에 대한 이유는 무엇입니까?
- (그리고이 방법은 정말 필요합니까?)
여기 HttpClientFactory의 코드 (예 : API 키 또는 허가 등의 적절한 헤더와 HttpClient를를 제작하는 헬퍼 클래스)입니다 :
internal static class HttpClientFactory
{
private static readonly Container _container = ContainerConfig.CreateWebApiContainer();
public static HttpClient Create()
{
var client = new HttpClient { BaseAddress = GetUrl() };
//...
return client;
}
}
InnerException 및 StackTrace 세부 정보를 게시 할 수 있습니까? 설정 파일에 바인딩 리디렉션이 있습니까? –
@DarinDimitrov에 동의합니다. 전체 스택 추적을주세요. 이러한 세부 사항이 없으면이를 추론하기가 어렵습니다. – Steven
@ 다린 : 업데이트되었습니다. 감사합니다! 바인드 리디렉션은 Web.config에있는 것과 매우 유사합니다. – abatishchev