메소드를 테스트하고 있었지만 ConfigurationManager.AppSettings를 moq 할 수 없다는 사실을 제외하고는 모든 것이 작동했습니다.Facade 어프로치를 사용하지 않고 ConfigurationManager.Appsetting을 모의 처리했습니다.
내 방법이public async Task<IDictionary<string, object>> Action(IDictionary<string, object> context)
{
if (ConfigurationManager.AppSettings[ApplicationUserFromDomainUserKey] == null)
throw new ConfigurationErrorsException(ApplicationUserFromDomainUserKey);
string storedProcedure = ConfigurationManager.AppSettings.Get(ApplicationUserFromDomainUserKey);
if (ConfigurationManager.ConnectionStrings[DbConnectionKey] == null)
throw new ConfigurationErrorsException(DbConnectionKey);
...
} 내가 this question에서 본 적이
으로 정의된다
외관 방식을 사용하여 접근은 좋은 것입니다하지만 사용하지 않는 먼지 내 클래스 구현을 것이라고 IOC의/DI
의 나뿐만 아니라이 intresting article하지만 만 대 엔터프라이즈 에디션에 적용하고 나는 그것이 CI에 실행 가능한 받기를 원하시면/VS 전문 에디션
읽었습니다내가 테스트를 위해 NUnit을 사용하고 내 테스트
[Test]
public void MissingAppSettingsKey()
{
var pipeline = new RetrieveApplicationUsernamePipelineStep();
var context = new Dictionary<string, object>()
{
[Resources.DomainUser] = "andrea",
[Resources.Domain] = "ifinformatica.net",
[Resources.ApplicationId] = 0
};
Assert.ThrowsAsync<ConfigurationErrorsException>(async() => await pipeline.Action(context));
}
}
P.S.입니다 또한 마이크로 유닛 테스트 프레임 워크를 실행하지 못하도록하는 resharper 도구를 사용합니다.
그럼 뭐가 궁금한가요? – stuartd
구성을 삽입하고 싶지 않으면 응용 프로그램이 "ConfigurationManager.AppSettings"를 사용하지 않고 선택한 싱글 톤을 사용하는 것이 가장 이상적입니다. 변경하기가 더 쉽습니다. 만약 당신이 * 그걸하고 싶지 않다면, [런타임에 읽히고있는'.config' 파일을 재조정 할 수 있습니다.] (http://stackoverflow.com/questions/6150644/), hacky가 (그리고 당신이 파일을 생성 할 필요가있을 때 테스트를위한 차선책). –