Ich sollte eine Methode testen und ich habe alles funktioniert, außer für die Tatsache, dass ich nicht in der Lage, die ConfigurationManager.AppSettings moq.Mocking ConfigurationManager.Appsettings ohne Verwendung von Facade Approach
Meine Methode als
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);
...
definiert ist}
ich in this question gesehen habe, dass ein Ansatz, um die Fassade Ansatz wäre schön, aber es wäre Schmutz meiner Klasse Implementierung, die nicht Gebrauch macht
von IoC/DIich habe auch diese intresting article lesen, aber dies gilt nur für Vs Enterprise Edition, und ich möchte es auf CI runnable sein/VS Professional Edition
Ich verwende NUnit für die Prüfung und mein Test ist
[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. Ich benutze auch Resharper-Tools zum Testen, die mich ausschließt, das Microsoft-Unit-Testframework auch
Also, was ist deine Frage? – stuartd
Das Mindeste, was Sie tun könnten, wenn Sie die Konfiguration nicht injizieren möchten, ist, dass Ihre Anwendung nicht 'ConfigurationManager.AppSettings' verwendet, sondern ein Singleton Ihrer Wahl, das besser geändert werden kann. Wenn Sie * das * nicht einmal machen wollen, ist es möglich, die '.config' Datei, die zur Laufzeit gelesen wird, erneut zu adressieren (http://stackoverflow.com/questions/6150644/), hacky wie dies ist (und dezidiert suboptimal für das Testen, da Sie Dateien generieren müssen). –