NUnit 3.4.1, JustMock 2016.2.713.2Kann ich die Groß-/Kleinschreibung in meinem Pseudonym behandeln?
Ich habe die Klasse im Test:
public class AppManager {
public string[] GetAppSets() => Registry.LocalMachine
.OpenSubKey(@"SOFTWARE\Autodesk\AutoCAD", false)
?.GetSubKeyNames();
}
Auch
, ich habe den Test für GetAppSets
Methode:
[Test]
public void GetAppSets_Returns_ValidValue() {
const string subkey = @"SOFTWARE\Autodesk\AutoCAD";
/* The sets of applications which are based on
* AutoCAD 2009-2017. */
string[] fakeSets = new[] { "R17.2", "R18.0",
"R18.1", "R18.2", "R19.0", "R19.1", "R20.0",
"R20.1","R21.0" };
RegistryKey rk = Mock.Create<RegistryKey>();
Mock.Arrange(() => rk.GetSubKeyNames()).Returns(
fakeSets);
Mock.Arrange(() => Registry.LocalMachine.OpenSubKey
(subkey, false)).Returns(rk);
AppManager appMng = new AppManager();
string[] appSets = appMng.GetAppSets();
Assert.AreEqual(fakeSets, appSets);
}
Es funktioniert. Aber mein Test Versagen, wenn GetAppSets
Methode verwendet "Software \ Autodesk \ AutoCAD" oder "Software \ autodesk \ autocad" string anstelle von "S OFTWARE \ Autodesk \ AutoCAD": die appSets
Variable null
sein wird, wenn String Case wird geändert (weil dieser Registrierungsschlüssel auf meinem Computer nicht existiert).
Also, in diesem Fall entweder Tester benötigen die GetAppSets
Methode Implementierung (die schlechte Variante) zu wissen, oder Parameter wie die Groß- und Kleinschreibung Zeichenfolge zu behandeln.
Ist es möglich, die zweite Variante zu verwenden?
Nein, mein Problem ist ein anderes. Die 'appSets' werden 'null', wenn der String-Case geändert wird (weil dieser Registrierungsschlüssel auf meinem Computer nicht existiert). Ich habe diese Zusatzinfo jetzt in mein Thema eingefügt. –
Ich sehe Ihren Standpunkt. Es ist ein Komponententest, wie in Ihren Tags angegeben, daher ist die Interaktion mit anderen Komponenten wie der Registrierung zulässig. Verwenden Sie eine Kopie für GetAppSets. – Karolis
Ich benutze einen Mock für meine 'GetAppSets' in meinem Test. Ich benutze NUnit und JustMock Frameworks. –