thanks, that helped. followed your code and it work, thanks.
On Nov 6, 3:14 pm, Mark Wilkinson <[email protected]> wrote: > yeah I think there is still a point of mocking you're not getting. > > The TimerControl class is your mock, so it needs to be consumed by another > class. > > You don't need to test if a mock calls itself. > > Lets say you have a Controller: > > public class MyController : Controller > { > private readonly ITimerControl _timer; > > public MyController(ITimerControl timer) > { > _timer = timer; > } > > void ButtonStart() > { > // some logic that might determine whether timer.TimerMethod() is called > } > > } > > // ignore the NUnit attributes, use microsoft's for your case > [TestFixture] > public class ControllerTests > { > // System under Test > private MyController _controllerSUT; > > // Dependencies > private ITimerControl _timerControl; > > [SetUp] > public void Setup() > { > _timerControl = MockRepository.GenerateMock<ITimerControl>(); > _controllerSUT = new MyController(_timerControl); > } > > [Test] > public void ButtonStart_should_call_timerControl_TimerMethod() > { > _controllerSUT.ButtonStart(); > // you're asserting that ButtonStart when invoked should call the > dependency method > // this could be AssertWasNotCalled, depends on the logic you're > testing > _timerControl.AssertWasCalled(d => d.TimerMethod()); > } > > > > > > > > } > >________________________________ > > From: E Jo <[email protected]> > >To: Rhino.Mocks <[email protected]> > >Sent: Tuesday, November 6, 2012 4:02 PM > >Subject: [RhinoMocks] Re: Fw: Newbie, need help with simple mock for void > >method > > >here the summary of the TimerControl class, sorry I was trying to keep > >it simple to just the method. Start is apart of the TimerControl > >class. > > >====================== > >public class TimerControl : ITimerControl > >{ > > Public TimerControl() > > { > > } > > > Public void TimerMethod() > > { > > Start(); > > } > > > Public void PauseTimer() > > { > > \\Loops thru a set of list threads > > } > > > Public void ContinueTimer() > > { > > Start(); > > } > > > Public void Start() > > { > > \\ foreach loop thru a list > > } > > > Public void Stop() > > { > > PauseTimers(); > > } > > >} > > >====================== > > >I've tried the following. > > >[TestMethod] > >public void ContinueTimer_Test() > >{ > > var mockTimer = MockRepository.GenerateMock<ITimerControl>(); > > mockTimer.ContinueTimer(); > > > mockTimer.VerifyAllExpectations(); > >} > > >I was going by this suggestion from this site > >http://www.ronaldwidha.net/2009/01/30/mocking-void-method-with-rhino-... > > >but I get his error " Invalid call, the last call has been used or no > >call has been made (make sure that you are calling a virtual (C#) / > >Overridable (VB) method)." > > >On Nov 6, 1:55 pm, Mark Wilkinson <[email protected]> wrote: > >> What is Start() a part of? What class? I assume the Timer class? > > >> you need to then have your ITimerControl consumed by some other class and > >> you would assert that your method "TimerMethod()" is called when expected. > > >> I think I understand what you're trying to do, to prevent actually calling > >> a real timer to start, so you're on the right track with the purpose of > >> Mocking but some other class needs to be your system under test, the > >> consumer of the ITimerControl class. > > >> >________________________________ > >> > From: E Jo <[email protected]> > >> >To: Rhino.Mocks <[email protected]> > >> >Sent: Tuesday, November 6, 2012 2:38 PM > >> >Subject: [RhinoMocks] Re: Fw: Newbie, need help with simple mock for void > >> >method > > >> >yes, i would like to know if Start() was called inside the > >> >TimerMethod(). > > >> >On Nov 6, 1:36 pm, Mark Wilkinson <[email protected]> wrote: > >> >> so you want to find out if Start() is called? > > >> >> >________________________________ > >> >> > From: E Jo <[email protected]> > >> >> >To: Rhino.Mocks <[email protected]> > >> >> >Sent: Tuesday, November 6, 2012 2:30 PM > >> >> >Subject: [RhinoMocks] Re: Fw: Newbie, need help with simple mock for > >> >> >void method > > >> >> >System - as in the Namespace "using System.IO" or the class. > > >> >> >The code below is the class I'm trying to test: > > >> >> >====================== > >> >> >public class TimerControl : ITimerControl > >> >> >{ > >> >> > Public TimerControl() > >> >> > { > >> >> > } > > >> >> > Public void TimerMethod() > >> >> > { > >> >> > Start(); > >> >> > } > >> >> >} > > >> >> >====================== > > >> >> >I just want to know if TimerMethod() was fired. > > >> >> >I've seen various ways of checking the void method within this Google > >> >> >Group, but they have layers of layers of code, my code is just simple. > >> >> >It has a empty constructor (which will be filled later) and void > >> >> >methods for different flows. My TimerControl Class just has void > >> >> >methods w/out parameters. I just want to test the flow, in which i > >> >> >want to know if the TimerMethod was executed. > > >> >> >On Nov 6, 1:15 pm, Mark Wilkinson <[email protected]> wrote: > >> >> >> Sorry here's my answer: > > >> >> >> >You're not testing anything. > > >> >> >> >If you're creating a mock then the system under test needs to use > >> >> >> >that mock. > > >> >> >> >You have no system under test inside this TestClass. > > >> >> >> >A system under test would be the consumer of this interface. > > >> >> >> >in this case you'd use it like: > > >> >> >> >myClass.SomeMethod(); // in SomeMethod you expect TimerMethod to be > >> >> >> >called or not to be called, based on the logic inside that method. > > >> >> >> >then your next line would be: > > >> >> >> >target.AssertWasNotCalled(method=>Method.TimerMethod()); > > >> >> >> >>________________________________ > >> >> >> >> From: E Jo <[email protected]> > >> >> >> >>To: Mark Wilkinson <[email protected]> > >> >> >> >>Sent: Tuesday, November 6, 2012 12:33 PM > >> >> >> >>Subject: Re: Newbie, need help with simple mock for void method > > >> >> >> >>[TestClass] > >> >> >> >>public Class > > >> >> >> TimerControllerTest > > >> >> >> >>{ > >> >> >> >> [TestMethod] > >> >> >> >> public void TimerMethod_Test1() > >> >> >> >> { > >> >> >> >> ITimerControl target = > >> >> >> >>MockRepository.GenerateMock<ITimerControl>(); > > >> >> >> >> target.AssertWasNotCalled(method=>Method.TimerMethod()); > >> >> >> >> } > > >> >> >> >> [TestMethod] > >> >> >> >> public void TimerMethod_Test2() > >> >> >> >> { > >> >> >> >> ITimerControl mock = > >> >> >> >>MockRepository.GenerateMock<ITimerControl>(); > > >> >> >> >> Expect.Call( mock.TimerMethod); > >> >> >> >> } > > >> >> >> >>} > > >> >> >> >>On Nov 6, 11:24 am, Mark Wilkinson <[email protected]> wrote: > >> >> >> >>> can you post the whole Unit Test class, the > > >> >> >> TestFixture you're using for this code below. > > >> >> >> >>> >________________________________ > >> >> >> >>> > From: E Jo <[email protected]> > >> >> >> >>> >To: [email protected] > >> >> >> >>> >Sent: Tuesday, November 6, 2012 12:02 PM > >> >> >> >>> >Subject: [RhinoMocks] Newbie, need help with simple mock for > >> >> >> >>> >void method > > >> >> >> >>> >Can anyone help with a simple mock for void methods. I'm been > >> >> >> >>> >trying all the suggested examples and still cannot the method > >> >> >> >>> >to be mock correctly. > > >> >> >> >>> >Below is the code example: > > >> >> >> >>> >================================== > > >> >> >> >>> >public class TimerControl : ITimerControl > >> >> >> >>> >{ > > >> >> >> >>> >Public void TimerMethod() > > >> >> >> >{ > >> >> >> >>> > Start(); > >> >> >> >>> >} > > >> >> >> >>> >} > > >> >> >> >>> >================================== > > >> >> >> >>> >I've tried the following and it won't work. > > >> >> >> >>> >ITimerControl target = > >> >> >> >>> >MockRepository.GenerateMock<ITimerControl>(); > > >> >> >> >>> >target.AssertWasNotCalled(method=>Method.TimerMethod()); > > >> >> >> >>> >============ this did not do nothing, it did not hit the > >> >> >> >>> >TimerMethod. > > >> >> >> >>> >And the tried the following also: > > >> >> >> >>> >ITimerControl mock = > >> >> >> >>> >MockRepository.GenerateMock<ITimerControl>(); > > >> >> >> >>> >Expect.Call( mock.TimerMethod); > > >> >> >> >>> >=========== no success. > > >> >> >> >>> >I'm new to Unit testing and tried very hard to find tutorials > >> >> >> >>> >on Rhino Mock and read the documentation, but I'm still a noob > >> >> >> >>> >in rhino mock and unit testing. Any help with this simple > >> >> >> mock? > > >> >> >> >>> >-EJ > > >> >> >> >>> >-- > >> >> >> >>> >You received this message because you are subscribed to the > >> >> >> >>> >Google Groups "Rhino.Mocks" group. > >> >> >> >>> >To view this discussion on the web > >> >> >> >>> >visithttps://groups.google.com/d/msg/rhinomocks/-/AUuQUe42OO4J. > >> >> >> >>> >To post to this group, send email to > >> >> >> >>> >[email protected]. > >> >> >> >>> >To unsubscribe from this group, send email to > >> >> >> >>> >[email protected]. > >> >> >> >>> >For more options, visit this group > >> >> >> >>> >athttp://groups.google.com/group/rhinomocks?hl=en. > > >> >> >-- > >> >> >You received this message because you are subscribed to the Google > >> >> >Groups "Rhino.Mocks" group. > >> >> >To post to this group, send email to [email protected]. > >> >> >To unsubscribe from this group, send email to > >> >> >[email protected]. > >> >> >For more options, visit this group > >> >> >athttp://groups.google.com/group/rhinomocks?hl=en. > > >> >-- > >> >You received this message because you are subscribed to the Google Groups > >> >"Rhino.Mocks" group. > >> >To post to this group, send email to [email protected]. > >> >To unsubscribe from this group, send email to > >> >[email protected]. > >> >For more options, visit > > ... > > read more » -- You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhinomocks?hl=en.
