public void Öffnungszeiten_IsNowOpen() { //var ö = new Öffnungszeiten(); //Assert.IsTrue(ö.IsNowOpen()); //// Problem: Unittest geht jetzt (15:23), aber am Abend oder am WE nicht mehr using (ShimsContext.Create()) { // Hier gilt "meine" System.Fakes.ShimDateTime.NowGet = () => new DateTime(1845, 3, 11, 12, 30, 59); // Andere Abhängigkeiten zum Spaß :) System.IO.Fakes.ShimFile.ExistsString = x => true; Assert.IsTrue(File.Exists("7:\\demo\\diedateigibtesnichASOD<aosd.<asd<sad<sad&&%&")); var ö = new Öffnungszeiten(); Assert.IsTrue(ö.IsNowOpen()); } // Anwendungsfälle: // Simulation von einem Sensor: Testcases für zu heiß, normal, kalt, keine sensordaten, Extremdaten // Keine echte DB-Verbindung // Netzwerkverbindung // Rest-API liefert immer den selben JSON/XML - String // => schnell und immer konsistente Daten }
public void IsNowOpenTest_FakesFramwork() { // 1) Referenzen -> FakeAssembly hinzufügen Öffnungszeiten öz = new Öffnungszeiten(); // 2) Shims.Context -> Bereich, in dem die Fake-Version gültig ist using (ShimsContext.Create()) { // Hier gelten die Fakes System.Fakes.ShimDateTime.NowGet = () => new DateTime(1848, 3, 12, 12, 32, 55); var fakevariante = DateTime.Now; Assert.IsFalse(öz.IsNowOpen()); // Sonntag hat zu !!! // <--- Hier wird intern DateTime.Now verwendet // Andere Anwendungsfälle: System.IO.Fakes.ShimFile.ExistsString = x => true; // "Datei existiert immer" if (File.Exists("7:\\/abcde\\demo.%&/([].txt🙂😍😎😊☺☺")) { ; } } var original = DateTime.Now; // Hier gilt das Original }
public void IsNowOpen_returns_FakeFramework() // VisualStudio Enterprise { // References -> Rechtsklick -> Add Fakes Libary Öffnungszeiten öz = new Öffnungszeiten(); // Definieren, dass statt DateTime.Now unser Fake genommen werden soll using (ShimsContext.Create()) { // Codebereich, wo unsere Fake-Konfiguration gültig ist: System.Fakes.ShimDateTime.NowGet = () => new DateTime(1848, 3, 13, 12, 45, 59); DateTime date = DateTime.Now; Assert.IsTrue(öz.IsNowOpen()); // Andere Varianten: System.IO.Fakes.ShimFile.ExistsString = file => true; // jede datei Existiert ;) if (File.Exists("7:\\demo/abc&%$%$\\&&%$&\t\tasd\tdemo.&%$.exe")) { ; } else { ; } } DateTime date2 = DateTime.Now; }
public void IsNowOpenTest() { Öffnungszeiten öz = new Öffnungszeiten(); // Problem: Am Fr gehts, am So nicht -> DateTime.Now Assert.IsTrue(öz.IsNowOpen()); // Lösung 1: Fakes-Framework: Visual Studio Enterprise // Lösung 2: Tonerdo.Pose -> OpenSource-Variante vom Fakes-Framework }