2016-06-08 9 views
0

관련하지만 RC2 통합 테스트 질문에 this RC1, 나는 UseServicesAsp.net 핵심 RC1에서 RC2 통합 테스트 : UseServices는 어디로 갔습니까?

//RC1: 
// TestServer = new TestServer(TestServer 
//    .CreateBuilder() 
//     .UseStartup<Startup>()); 
//RC2: 
// TestServer=new TestServer(new WebHostBuilder().UseEnvironment....) 

var builder2 = new WebHostBuilder() 
.UseEnvironment("Development") 
/* RC2 port: 
.UseServices(services => 
{ 
       // Change the application environment to the mvc project 
       var env = new    TestApplicationEnvironment(); 
    env.ApplicationBasePath = Path.GetFullPath(Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, "..", "..", "src", "RamSoft.Fhir.Api")); 
    env.ApplicationName = "RamSoft Patient Api Service"; 

    services.AddInstance<IApplicationEnvironment>(env); 
}) 
*/ 
.UseStartup<RamSoft.Fhir.Api.Startup>(); 
TestServer = new TestServer(builder2); 
Client = TestServer.CreateClient(); 

내 샘플의 TestApplicationEnvironment 위과 같이 최소한의 모의 객체로 나타납니다에게 무슨 일이 일어 났는지 알아 내기 위해 노력하고 있습니다로 동일하지 :

public class TestApplicationEnvironment : IApplicationEnvironment 
    { 
     public string ApplicationBasePath { get; set; } 

     public string ApplicationName { get; set; } 

     public string ApplicationVersion => PlatformServices.Default.Application.ApplicationVersion; 

     public string Configuration => PlatformServices.Default.Application.Configuration; 

     public FrameworkName RuntimeFramework => PlatformServices.Default.Application.RuntimeFramework; 

     public object GetData(string name) 
     { 
      return PlatformServices.Default.Application.GetData(name); 
     } 

     public void SetData(string name, object value) 
     { 
      PlatformServices.Default.Application.SetData(name, value); 
     } 
    } 

여기에는 문서가 없습니다 (docs.asp.net은 아직 업데이트되지 않았습니다). 누구든지이 코드를 컴파일하는 방법을 알고 있습니까? 위에서 주석 처리 된 누락 된 코드는 일부 응용 프로그램 레벨 환경 설정을 설정하고이를 응용 프로그램 환경으로 제공합니다. 지금까지는 이것이 사라졌으며 IHostingEnvironment로 대체 될 수 있지만, 통합 테스트에 조롱 한 IHostingEnvironment를 제공하는 방법은 분명히 명확하지 않습니다. 분리 된 특성으로 인해 존재하지 않는 믹스 인이 제공 할 수 있습니다 내 프로젝트에 .json, 그리고 어떻게 진행해야할지 모르겠다.

테스트를 통과하기 위해이 코드가 더 이상 필요하지 않을 수도 있으며, 해결책을 찾아내는 경우 직접 대답을하겠습니다.

System.Exception was unhandled by user code 
    HResult=-2146233088 
    Message=Could not resolve a service of type 'Microsoft.Extensions.Configuration.IConfiguration' for the parameter 'configuration' of method 'Configure' on type 'X.Y.Api.Startup'. 
    Source=Microsoft.AspNetCore.Hosting 
    StackTrace: 
     at Microsoft.AspNetCore.Hosting.Startup.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder) 
     at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() 
     at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() 
     at Microsoft.AspNetCore.TestHost.TestServer..ctor(IWebHostBuilder builder) 
     at X.Y.IntegrationTests.TestServerFixture..ctor() in D:\....IntegrationTests\TestServerFixture.cs:line 68 
    InnerException... 
+0

이 중국어 문서는 어떤 용도로 사용 되나요? http://dlcenter.gotop.com.tw/SampleFiles/ACL041300/%E8%A3%9C%E5%85%85%E5%8F%8A%E6%9B%B4%E6%96%B0%E8%B3 % 87 % E6 % 96 % 99/B.PDF – silkfire

+0

가까이에 없습니다. 저것은 2015 년 중반 "베타 4"시대의 고대 재료들입니다. 저는 RC2에 대해 묻고 있습니다. 나는 또한 중국어를 말하지 않는다. –

+0

알았어, 내 잘못 :/ – silkfire

답변

1
: 위의 주석 코드와 런타임시

, 내가 코드에 필요한 무언가가 누락 의존성 반전 컨테이너 IConfiguration를 해결할 수 없다는와 아마 문제를 계속 나타냅니다 오류가

찾으시는 분 ConfigureServices :

.ConfigureServices(services => { 
    //Make your `env`... 
    services.AddSingleton(env); 
}); 
+0

그게 올바른 API 인 것 같습니다. 내 테스트를 수정하는 것이 이보다 더 심층적 인 것으로 보이지만이를 허용으로 표시하고 가짜 IApplicationEnvironment (RC1)를 가짜 또는 모의로 변환 할 때 수행해야 할 작업을 알아 내면 내 대답을 편집합니다. 고정 장치 IHostingEnvironment (RC2). –