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.
