Further to this ....

this is the reasn for my reluctance to use StrictMock : the use of a
StrictMock implies your internal knowledge of the item being mocked,
you need to know what the internal implications are for making a call.
To me, this is at far too granular a level.

On Apr 14, 12:42 pm, bill richards <[email protected]>
wrote:
> In that line of code you have said:
>
> I expect the member CreateNewCalendar to be called on model using the
> value view.CalendarName as a parameter.
> I expect it to be called at least once and it will return c.
>
> Nowhere have you stated that you expect model.GetCalendar to be
> called.
>
> On Apr 14, 12:08 pm, Joseph Dineen <[email protected]> wrote:
>
>
>
> > But I thought that the Line in my test
>
> > Rhino.Mocks.Expect.Call(model.CreateNewCalendar(view.CalendarName)).Repeat.­­AtLeastOnce.Return(c)
>
> > Sets up such an expectation?
>
> > If it does not then how does one set up the expectation?
>
> > On Apr 14, 11:49 am, bill richards <[email protected]>
> > wrote:
>
> > > The point that Tim is making is that, ANY call that is made on your
> > > StrictMock, for which you HAVE NOT set an expectation for, will cause
> > > the test to fail.
>
> > > Whe you use a StrictMock, you have to set an expectation for EVERY
> > > call made on that object. So it is completely expeted that a call to
> > > model.GetCalendar will throw an expectation excepton, since you have
> > > not set up such an expectation.
>
> > > On Apr 14, 11:07 am, Joseph Dineen <[email protected]> wrote:
>
> > > > Well I have tried it using DynamicMock instead of StrictMock and it
> > > > made no difference.
> > > > Besides, the line
>
> > > > > > Rhino.Mocks.Expect.Call(model.CreateNewCalendar(view.CalendarName)).Repeat.­­­AtLeastOnce.Return(c)
>
> > > > Should create the expectation and I know the event is raised because I
> > > > can see the call in the event in the debugger.
> > > > The problem arises when the cal is made to the model.GetCalendar
> > > > method. There the expectation exception gets raised.
> > > > I have akso tried adding IgnoreArguments to no avial.
> > > > I am sure I am missing something but I do not know what.
>
> > > > On Apr 13, 8:39 pm, Tim Barcz <[email protected]> wrote:
>
> > > > > It appears you are using strict mocks...which means any call not 
> > > > > "expected"
> > > > > will cause the test to fail.
>
> > > > > On Tue, Apr 13, 2010 at 11:40 AM, Joseph Dineen 
> > > > > <[email protected]>wrote:
>
> > > > > > Hi, I am new to Rhino Mocks and I have tried to post this message
> > > > > > before but it does not seem to have appeared on the messageboard nor
> > > > > > did I get any indication that the moderators have seen the message.
> > > > > > While i have been using Unit Testing and TDD for a while I have not
> > > > > > gotten into mocking in any major way. I did use DotNetMock for a 
> > > > > > while
> > > > > > in a single project and I want to refactor parts of it using VB.NET
> > > > > > 2010 as a learning excersise but found that DotNetMock does not play
> > > > > > well with MSUnitTest and appears to be a dead project.
> > > > > > So I decided to learn Rhino Mocks after some research on the net.
> > > > > > To do this I decided to implement a view model comtoller application
> > > > > > and communicate from the view to the controller with events, call
> > > > > > stuff from the model in the event handlers on the controller and see
> > > > > > how it works out. I also decided to use the older Replay verify 
> > > > > > syntax
> > > > > > since I have mostly worked with 2005 and earlier and have not yet
> > > > > > looked at lambda functions. Also the only examples in vb I could 
> > > > > > find
> > > > > > used this systax and while I could see that the C# lambda stuff was
> > > > > > trying to do I have no idea of how to implement that code in vb.
> > > > > > So some code ( the application aim to generate fantasy calendars for
> > > > > > rpgs.)
>
> > > > > > ''' <summary>
> > > > > > ''' This the view of the calendars
> > > > > > ''' </summary>
> > > > > > Public Interface ICalendarsView
>
> > > > > >    'the events represent user actions that are addressed by the 
> > > > > > model
> > > > > >    Event CreateNewCalendar As EventHandler
>
> > > > > >    Event Save As EventHandler
>
> > > > > >    Event GetCalendarList As EventHandler
>
> > > > > >    Event GetCalendar As EventHandler
>
> > > > > >    Property CalendarName As String
>
> > > > > >   ......
>
> > > > > >    'these methods allow the controller to pass data to the view
> > > > > >    Sub ShowPreviewForYear(ByVal yearNumber As Integer)
>
> > > > > >    Sub SetCalendar(ByVal c As Calendar)
>
> > > > > >    Sub SetCalendarList(ByVal calList As List(Of Calendar))
>
> > > > > > End Interface
>
> > > > > > ''' <summary>
> > > > > > ''' the Model
> > > > > > ''' </summary>
> > > > > > ''' <remarks></remarks>
> > > > > > Public Interface ICalendarEngine
>
> > > > > >    Function GetCalendars() As List(Of Calendar)
>
> > > > > >    Function GetCalendar(ByVal name As String) As Calendar
>
> > > > > >    Function CreateNewCalendar(ByVal name As String) As Calendar
>
> > > > > >    Sub SaveCalendar(ByVal c As Calendar)
>
> > > > > > End Interface
>
> > > > > > The controller
> > > > > > '' <summary>
> > > > > > ''' Controller of the view
> > > > > > ''' </summary>
> > > > > > ''' <remarks>Instantiated and refers to the model and the view</
> > > > > > remarks>
> > > > > > Public Class CalendarsController
>
> > > > > >    Private WithEvents _view As ICalendarsView
> > > > > >    Private _model As ICalendarEngine
>
> > > > > >    Public Sub New(ByVal view As ICalendarsView, ByVal model As
> > > > > > ICalendarEngine)
> > > > > >        If IsNothing(view) Or IsNothing(model) Then
> > > > > >            Throw New ArgumentNullException("Passed parameters were
> > > > > > not instantiated")
> > > > > >        End If
> > > > > >        _view = view
> > > > > >        _model = model
> > > > > >        'Add the event handlers
> > > > > >        AddHandler _view.CreateNewCalendar, AddressOf
> > > > > > OnCreateNewCalendar
>
> > > > > >    End Sub
>
> > > > > >    Private Sub OnCreateNewCalendar(ByVal sender As Object, ByVal e 
> > > > > > As
> > > > > > EventArgs)
> > > > > >        Dim c As Calendar = _model.GetCalendar(CType(sender,
> > > > > > ICalendarsView).CalendarName)
>
> > > > > >    End Sub
>
> > > > > > The test
>
> > > > > > Imports System.Text
> > > > > > Imports ArdoughterSoftware.FantasyCalendar
> > > > > > Imports Rhino.Mocks
> > > > > > Imports Rhino.Mocks.Interfaces
>
> > > > > > <TestClass()>
> > > > > > Public Class TestCalendarsController
>
> > > > > >    Private testContextInstance As TestContext
>
> > > > > >    '''<summary>
> > > > > >    '''Gets or sets the test context which provides
> > > > > >    '''information about and functionality for the current test run.
> > > > > >    '''</summary>
> > > > > >    Public Property TestContext() As TestContext
> > > > > >        Get
> > > > > >            Return testContextInstance
> > > > > >        End Get
> > > > > >        Set(ByVal value As TestContext)
> > > > > >            testContextInstance = value
> > > > > >        End Set
> > > > > >    End Property
>
> > > > > >    Private moMockery As MockRepository
>
> > > > > >  ' Use TestInitialize to run code before running each test
> > > > > >    <TestInitialize()> Public Sub MyTestInitialize()
> > > > > >        moMockery = New MockRepository
> > > > > >    End Sub
> > > > > >    '
> > > > > >    ' Use TestCleanup to run code after each test has run
> > > > > >    <TestCleanup()> Public Sub MyTestCleanup()
> > > > > >        moMockery.VerifyAll()
> > > > > >    End Sub
>
> > > > > >    Public Sub TestCreateNewCalendarEventIsRaisedTheOldWay()
> > > > > >        Dim e As New EventArgs
> > > > > >        Dim c As New Calendar
> > > > > >        Dim view As ICalendarsView
> > > > > >        view = moMockery.Stub(Of ICalendarsView)()
> > > > > >        Dim model As ICalendarEngine
> > > > > >        model = moMockery.StrictMock(Of ICalendarEngine)()
> > > > > >        Dim calendarName As String = "Dale Reckoning"
> > > > > >        view.CalendarName = calendarName
> > > > > >        AddHandler view.CreateNewCalendar, Nothing
> > > > > >        LastCall.Constraints(Constraints.Is.NotNull)
>
> > > > > >        Dim CreateNewCalendarEventRaiser As IEventRaiser =
> > > > > > LastCall.GetEventRaiser()
>
> > > > > > Rhino.Mocks.Expect.Call(model.CreateNewCalendar(view.CalendarName)).Repeat.­­­AtLeastOnce.Return(c)
>
> > > > > >        moMockery.ReplayAll()
>
> > > > > >        Dim controller = New CalendarsController(view, model)
>
> > > > > >        CreateNewCalendarEventRaiser.Raise(CType(view, Object), e)
> > > > > >    End Sub
>
> > > > > > End Class
>
> > > > > > The Error message
>
> > > > > > Test method
>
> > > > > > TestCalendars.TestCalendarsController.TestCreateNewCalendarEventIsRaisedThe­­­OldWay
> > > > > > threw exception:
> > > > > > Rhino.Mocks.Exceptions.ExpectationViolationException:
> > > > > > ICalendarEngine.GetCalendar("Dale Reckoning"); Expected #0, Actual 
> > > > > > #1.
> > > > > > TestCleanup method 
> > > > > > TestCalendars.TestCalendarsController.MyTestCleanup
> > > > > > threw exception. 
> > > > > > Rhino.Mocks.Exceptions.ExpectationViolationException:
> > > > > > Rhino.Mocks.Exceptions.ExpectationViolationException:
> > > > > > ICalendarEngine.GetCalendar("Dale Reckoning"); Expected #0, Actual
> > > > > > #1..
>
> > > > > > Now Googling that message, would indicate that the method and the
> > > > > > event raise are not getting the parameters they expect and that they
> > > > > > are expecting a particular instance of an object. Which I do not
> > > > > > understand as they are getting the same instance of the object. I 
> > > > > > have
> > > > > > tried placing IgnoreArguments qualifiers on the expected calls and 
> > > > > > the
> > > > > > GetEventRiser method but it does not appear to make any difference.
>
> > > > > > What am I not getting? I am sure it is one of those things that is
> > > > > > obvious once you know it,
>
> > > > > > Also if I do get this code working how would i put it in AAA syntax?
>
> > > > > > Thanks
> > > > > > Joe
>
> > > > > > --
> > > > > > 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
>
> ...
>
> read more »- Hide quoted text -
>
> - Show quoted text -

-- 
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.

Reply via email to