public void ScenarioPlayTest() { using (RecorderManager.NewRecordingSession("test")) { // Make a callee, not really used but needed to record a constructor call: MockingProxy callee = new MockingProxy(typeof(Sample.Account), null, "m1"); // Push some calls in the recorder: MockableCall lastcall; CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetConstructor(new Type[] { typeof(Sample.CurrencyUnit) }), null)); lastcall.SetConstructionResult("acc"); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetMethod("Deposit"), null)); lastcall.SetCallResult(); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetMethod("Withdraw"), null)); lastcall.SetCallResult(); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetProperty("Balance").GetGetMethod(), null)); lastcall.SetCallResult(10m); } using (RecorderManager.NewPlayBackSession("test", true)) { // Register types to mock: MockService.AddTypeToMock(typeof(Sample.Account)); // Play scenario: Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); acc.Deposit(100m); acc.Withdraw(25m); Decimal balance = acc.Balance; // Checks: Assert.AreEqual(10m, balance); // Does not match the scenario, but the mocking result ! } }
public void RecordAndPlaybackTest() { decimal balanceToBe; Assert.AreEqual(RecorderState.None, RecorderManager.Action); using (RecorderManager.NewRecordingSession("test")) { Assert.AreEqual(RecorderState.Recording, RecorderManager.Action); MockService.AddTypeToMock(typeof(Sample.Account)); MockService.AddTypeToMock(typeof(Sample.CustomizableCurrencyService)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.SwitchCurrency(Sample.CurrencyUnit.USD); acc.Withdraw(50m); balanceToBe = acc.Balance; } Assert.AreEqual(RecorderState.None, RecorderManager.Action); Assert.AreEqual(5, CurrentRecorder.Count); Assert.IsTrue(CurrentRecorder[0].IsConstructorCall); Assert.AreEqual("Deposit", CurrentRecorder[1].Method.Name); Assert.AreEqual("SwitchCurrency", CurrentRecorder[2].Method.Name); Assert.AreEqual("Withdraw", CurrentRecorder[3].Method.Name); Assert.AreEqual("get_Balance", CurrentRecorder[4].Method.Name); Assert.AreEqual(balanceToBe, CurrentRecorder[4].ReturnValue); using (RecorderManager.NewPlayBackSession("test", false)) { Assert.AreEqual(RecorderState.PlayBack, RecorderManager.Action); MockService.AddTypeToMock(typeof(Sample.Account)); MockService.AddTypeToMock(typeof(Sample.CustomizableCurrencyService)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.SwitchCurrency(Sample.CurrencyUnit.USD); acc.Withdraw(50m); Assert.AreEqual(balanceToBe, acc.Balance); RecorderManager.ValidatePlayBack(); } Assert.AreEqual(RecorderState.None, RecorderManager.Action); Assert.IsTrue(CurrentRecorder.Validated); }
public void PropertyMock() { using (RecorderManager.NewRecordingSession("test")) { MockService.AddTypeToMock(typeof(Sample.Account)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.Withdraw(50m); Assert.IsTrue(acc.IsBalancePositive); } using (RecorderManager.NewPlayBackSession("test", true)) { MockService.AddTypeToMock(typeof(Sample.Account)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.Withdraw(50m); Assert.IsTrue(acc.IsBalancePositive); } }
public void ScenarioPlayTest() { using (RecorderManager.NewRecordingSession("test")) { // Make a callee, not really used but needed to record a constructor call: MockingProxy callee = new MockingProxy(typeof(Sample.Account), null, "m1"); // Push some calls in the recorder: MockableCall lastcall; CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetConstructor(new Type[] { typeof(Sample.CurrencyUnit) }), null)); lastcall.SetConstructionResult("acc"); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetMethod("Deposit"), null)); lastcall.SetCallResult(); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetMethod("Withdraw"), null)); lastcall.SetCallResult(); CurrentRecorder.RecordCall(lastcall = new MockableCall(callee, typeof(Sample.Account).GetProperty("Balance").GetGetMethod(), null)); lastcall.SetCallResult(10m); } using (RecorderManager.NewPlayBackSession("test", true)) { // Register types to mock: MockService.AddTypeToMock(typeof(Sample.Account)); // Play scenario: Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); acc.Deposit(100m); acc.Withdraw(25m); Decimal balance = acc.Balance; // Checks: Assert.AreEqual(10m, balance); // Does not match the scenario, but the mocking result ! } }
public void PropertyMock() { using (RecorderManager.NewRecordingSession("test")) { MockService.AddTypeToMock(typeof(Sample.Account)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.Withdraw(50m); Assert.IsTrue(acc.IsBalancePositive); } using (RecorderManager.NewPlayBackSession("test", true)) { MockService.AddTypeToMock(typeof(Sample.Account)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.Withdraw(50m); Assert.IsTrue(acc.IsBalancePositive); } }
public void RecordAndPlaybackTest() { decimal balanceToBe; Assert.AreEqual(RecorderState.None, RecorderManager.Action); using (RecorderManager.NewRecordingSession("test")) { Assert.AreEqual(RecorderState.Recording, RecorderManager.Action); MockService.AddTypeToMock(typeof(Sample.Account)); MockService.AddTypeToMock(typeof(Sample.CustomizableCurrencyService)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.SwitchCurrency(Sample.CurrencyUnit.USD); acc.Withdraw(50m); balanceToBe = acc.Balance; } Assert.AreEqual(RecorderState.None, RecorderManager.Action); Assert.AreEqual(5, CurrentRecorder.Count); Assert.IsTrue(CurrentRecorder[0].IsConstructorCall); Assert.AreEqual("Deposit", CurrentRecorder[1].Method.Name); Assert.AreEqual("SwitchCurrency", CurrentRecorder[2].Method.Name); Assert.AreEqual("Withdraw", CurrentRecorder[3].Method.Name); Assert.AreEqual("get_Balance", CurrentRecorder[4].Method.Name); Assert.AreEqual(balanceToBe, CurrentRecorder[4].ReturnValue); using (RecorderManager.NewPlayBackSession("test", false)) { Assert.AreEqual(RecorderState.PlayBack, RecorderManager.Action); MockService.AddTypeToMock(typeof(Sample.Account)); MockService.AddTypeToMock(typeof(Sample.CustomizableCurrencyService)); Sample.Account acc = new Sample.Account(Sample.CurrencyUnit.EUR); Assert.IsTrue(MockService.IsMock(acc)); acc.Deposit(100m); acc.SwitchCurrency(Sample.CurrencyUnit.USD); acc.Withdraw(50m); Assert.AreEqual(balanceToBe, acc.Balance); RecorderManager.ValidatePlayBack(); } Assert.AreEqual(RecorderState.None, RecorderManager.Action); Assert.IsTrue(CurrentRecorder.Validated); }