Ich habe eine Klasse, in der es einen Parameter weniger Konstruktor gibt. Wenn dieser Konstruktor aufgerufen wird, gibt es fünf Eigenschaften der Klasse, die Werte aus der Konfigurationsdatei im Konstruktor abrufen. Es gibt zwei Methoden in der Klasse, die die Parameter verwenden, die im Konstruktor initialisiert werden.Wie Konfig-Datei für Komponententest zu tun
Ich möchte Komponententest für zwei Methoden mit Mock Framework schreiben. Aber ich bin mir nicht sicher, wie man die Parameter im Konstruktor initialisiert, da der Aufruf der Methode den Wert für diese Eigenschaften nicht liefert.
public class ABC
{
public ABC()
{
a = ConfigurationManager.AppSetting["GetValue"];
b = ConfigurationManager.AppSetting["GetValue1"];
}
public int Method1(IDictionary<string, string> dict)
{
d = a + b /2; (how to mock values of a and b while writing unit tests
using mock framework. In reality, a in my case is
dictionary)
//some business logic
return d;
}
}
Dankbarkeitskreuzes im Voraus,
Es gibt keine Mocks, da der Konstruktor eng an 'ConfigurationManager' gekoppelt ist. Sie könnten jedoch die benötigten Schlüssel/Wert-Paare zur app.config des Komponententests hinzufügen. Ich kann nicht viel mehr sagen, da die bereitgestellten Informationen spärlich sind. Stellen Sie einen [mcve] bereit, der verwendet werden kann, um das tatsächliche Problem zu replizieren und beim Erstellen einer möglichen Lösung zu helfen. – Nkosi
Verwenden Sie einen Wrapper um den Konfigurationsmanager und spotten Sie über den Wrappertyp. Siehe [hier] (https://stackoverflow.com/questions/9486087/how-to-mock-configurationmanager-appsettings-with-moq) – Nilesh