Thanks Patrick. I'm still struggling with the docs for RhinoMocks and
not having a lot of luck.I've posted another question to this group
about how to verify that an event was attached. I'm finding that since
I am still trying to learn RhinoMocks that the docs don't really help
me all that much.

On Dec 3, 11:14 am, Patrick Steele <[email protected]> wrote:
> Rhino.Mocks has some pretty good syntax for raising events:
>
> http://www.ayende.com/wiki/Rhino+Mocks+3.5.ashx#Howtoraiseevents
>
> ---
> Patrick Steelehttp://weblogs.asp.net/psteele
>
>
>
>
>
>
>
> On Tue, Nov 30, 2010 at 4:59 PM, Bill44077 <[email protected]> wrote:
> > Hi,
>
> > Well I found why the above test wasn't working. I have this line:
>
> >            dict.Add("LoadID", "123");
>
> > and it should have been:
>
> >            dict.Add("LoadId", "123");   <-- the d in Id needed to be
> > lower case to match... ugh!
>
> > Now to try and figure out how to check that the event is wired up
> > correctly and then to try and raise it and see if the Completed method
> > is called.
>
> > thanks,
> > Bill
>
> > On Nov 30, 4:46 pm, Bill44077 <[email protected]> wrote:
> >> Hey Steve!
> >> Good to hear from you - thanks for the comeback. No, I hadn't seen
> >> Jon's examples before. They do look really good but I'm still
> >> struggling. I'm trying to get just the AssetWasCalled to work and am
> >> having trouble. It says it isn't. It probably has something to do with
> >> the params. Here's what I'm doing:
>
> >>         [TestMethod]
> >>         public void SearchForStopEvents()
> >>         {
> >>             // Arrange:
> >>             ValidationRules vr = new ValidationRules();
> >>             Dictionary<string, string> dict = new Dictionary<string,
> >> string>();
> >>             string LoadID = "123";
> >>             GlobalVariables.SearchType st =
> >> GlobalVariables.SearchType.ByLoadId;
>
> >>             // Act: When I push search button
> >>             var stub = MockRepository.GenerateStub<IDataService>();
> >>             Search sut = new Search(stub, vr);
> >>             sut.AddFilter(GlobalVariables.LoadId, LoadID);
> >>             dict.Add("LoadID", "123");
> >>             sut.GetStopEvents(GlobalVariables.SearchType.ByLoadId);
>
> >>             // Assert:
> >>             stub.AssertWasCalled(s => s.GetStopEventsAsync(dict,
> >> GlobalVariables.SearchType.ByLoadId));
> >>         }
>
> >> Here’s my error:
>
> >> IDataService.GetStopEventsAsync(System.Collections.Generic.Dictionary`2[Sys
> >>  tem.String,System.String],
> >> ByLoadId); Expected #1, Actual #0.
>
> >> Not sure what this ‘2 means. Don't know how to make it ignore or not
> >> care about what the params are, if that's possible or reasonable.
>
> >> Thanks,
>
> >> Bill
>
> >> On Nov 30, 2:29 pm, Stephen Bohlen <[email protected]> wrote:
>
> >> > Bill:
>
> >> > Have you taken a look 
> >> > athttps://github.com/JonKruger/RhinoMocksExamples/raw/master/src/RhinoM...
> >> > an example of most common usage scenarios that you will encounter?
> >> > Its a
> >> > bit old now, but is (mostly) still correct in re: its syntax and probably
> >> > covers most of what you need in re: general syntax for the use-cases you
> >> > mention here.
>
> >> > Steve Bohlen
> >> > [email protected]http://blog.unhandled-exceptions.comhttp://twitter.com/sbohlen
>
> >> > On Tue, Nov 30, 2010 at 1:31 PM, Bill44077 <[email protected]> 
> >> > wrote:
> >> > > Hi Patrick,
> >> > > Thanks for the reply! I'm a big fan of your writings.
>
> >> > > Details: I have a wcf web service and the interface has lots of stuff
> >> > > in it, but I am mainly interested in making a call to one of these
> >> > > services to have it get data from the database and return it to my SL4
> >> > > application. That part of the interface includes:
>
> >> > >    public interface IDataService : IMACSWcfService
> >> > >    {
> >> > >        ...
> >> > >        void
> >> > > GetStopEventsAsync(System.Collections.Generic.Dictionary<string,
> >> > > string> param, object userState);
> >> > >        event System.EventHandler<GetStopEventsCompletedEventArgs>
> >> > > GetStopEventsCompleted;
> >> > >        ...
> >> > >     }
>
> >> > > I have a search class that will need to call this DataService async
> >> > > and in the production code I will need to do something like this:
>
> >> > > 1. Pass in the IDataService implementation using constructor injection
> >> > > to the Search class
> >> > > 2. Save this locally in the Search class
> >> > > 3. Create a method in Search that will call the ws to get the data
> >> > > 4. When the data is returned an event is raised and the callback is
> >> > > executed
> >> > > 5. The callback saves the returned data
>
> >> > > If want to TDD this with Rhino/MSTest then
>
> >> > >        private MockRepository mockRepository;
> >> > >        private IDataService mockDS;
>
> >> > >        [TestMethod]
> >> > >        public void SearchForStopEventsShouldCallGetStopEventsAsync()
> >> > >        {
> >> > >            // Arrange:
> >> > >            mockRepository = new MockRepository();
> >> > >            mockDS = mockRepository.StrictMock<IDataService>();
> >> > >            Search sut = new Search(mockDS);
>
> >> > >            // Act:
> >> > >            sut.GetStopEvents(GlobalVariables.SearchType.ByLoadId);
>
> >> > >            // Assert:
>
> >> > > RhinoMocksExtensions.AssertWasCalled(mockDS.GetStopEventsAsync(null,
> >> > > null));
> >> > >        }
>
> >> > >        [TestMethod]
> >> > >        public void
> >> > > SearchForStopEventsShouldRegisterCallbackEvent_OnDataReturned()
> >> > >        {
> >> > >            // Arrange:
> >> > >            mockRepository = new MockRepository();
> >> > >            mockDS = mockRepository.StrictMock<IDataService>();
> >> > >            Search sut = new Search(mockDS);
>
> >> > >            // Act:
> >> > >            sut.GetStopEvents(GlobalVariables.SearchType.ByLoadId);
>
> >> > >            // Assert:
>
> >> > >        }
>
> >> > >        [TestMethod]
> >> > >        public void
> >> > > SearchForStopEventsShouldCallbackEvent_OnDataReturned_WhenEventIsRaised()
> >> > >        {
> >> > >            // Arrange:
> >> > >            mockRepository = new MockRepository();
> >> > >            mockDS = mockRepository.StrictMock<IDataService>();
> >> > >            Search sut = new Search(mockDS);
>
> >> > >            // Act:
> >> > >            sut.GetStopEvents(GlobalVariables.SearchType.ByLoadId);
>
> >> > >            // Assert:
>
> >> > >        }
>
> >> > > Here is what my production code will look like:
> >> > >    public class Search : ISearch
> >> > >    {
> >> > >        private readonly IDataService _dataService;
>
> >> > >        public Search(IDataService ds)
> >> > >        {
> >> > >            _dataService = ds;
> >> > >        }
>
> >> > >        public void GetStopEvents(GlobalVariables.SearchType st)
> >> > >        {
> >> > >            try
> >> > >            {
> >> > >                _dataService.GetStopEventsCompleted +=
> >> > > OnDataReturned; ;
> >> > >                _dataService.GetStopEventsAsync(_param, st);
>
> >> > >            }
> >> > >            catch (Exception ex)
> >> > >            {
> >> > >                if (!ViewModelLocator.IsMACSAdjustmentVMNull)
> >> > >                {
>
> >> > > ViewModelLocator.MACSAdjustmentViewModelStatic.ReturnedMessage =
> >> > > ex.Message;
> >> > >                }
> >> > >                throw new Exception(ex.Message);
> >> > >            }
>
> >> > >        void OnDataReturned(object sender,
> >> > > GetStopEventsCompletedEventArgs e)
> >> > >        {
>
> >> > >            var args = new GetDataDoneInSearchModelArgs();
> >> > >            if (e.Result != null && e.Result.ToList().Count > 0)
> >> > >            {
> >> > >                _stopEventsDataListReturned =
> >> > > e.Result.Select(dtoStopEvent => new Stop(dtoStopEvent)).ToList();
> >> > >                ...
> >> > >            }
> >> > >            else
> >> > >            {
> >> > >                args.Message = "No Data Found";
> >> > >            }
> >> > >        }
>
> >> > > Clearly, I have no idea where to start with Rhino,
> >> > > 1)  whether I should be using a strictmock or a stub.
> >> > > 2) how to check that a method on the mock was called
> >> > > 3) how to check if the even has been registered
> >> > > 4) how to raise the event
> >> > > 5) how to check if the callback was called.
>
> >> > > I find so many different syntaxes in examples using Rhino probably
> >> > > because of all of the different APIs that have existed over time. I'd
> >> > > like to be able to use the AAA Syntax if possible but am totally lost
> >> > > when it comes to how.
>
> >> > > thanks much!
> >> > > Bill Campbell
> >> > > (twitter: bill44077)
>
> >> > > On Nov 30, 10:52 am, Patrick Steele <[email protected]> wrote:
> >> > > > I've never mocked anything like this before either, but I have used
> >> > > > Rhino Mocks before.  Do you have some sample code that you could 
> >> > > > show?
> >> > > >  Something concrete like your interface definition and how you want
> >> > > > things mocked out?
>
> >> > > > ---
> >> > > > Patrick Steelehttp://weblogs.asp.net/psteele
>
> >> > > > On Sat, Nov 27, 2010 at 3:41 PM, Bill44077 <[email protected]>
> >> > > wrote:
> >> > > > > Hi,
> >> > > > > I've been trying to figure out how to mock an async wcf call 
> >> > > > > mocking
> >> > > > > out the interface using RhinoMocks. I can't seem to be able to 
> >> > > > > figure
> >> > > > > out how to do this using the AAA syntax (not playback/record), 
> >> > > > > mocking
> >> > > > > raising the callback event, using lambdas, receiving the result 
> >> > > > > object
> >> > > > > from the mock. I basically want to mock out this whole 
> >> > > > > collaboration.
> >> > > > > I'm quite sure this is possible but can't figure out the 
> >> > > > > syntax/calls.
> >> > > > > If anyone has an example of how to do this - I'd really appreciate 
> >> > > > > it.
> >> > > > > I would think this would be a very common set of tests when doing 
> >> > > > > TDD
> >> > > > > with Silverlight since everything with the server is an async call.
> >> > > > > Thanks in Advance!
> >> > > > > Bill Campbell
>
> >> > > > > --
> >> > > > > You received this message because you are
>
> ...
>
> 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.

Reply via email to