Hi Steven

Thanks very much for very neat explanation, a great help....cheers

On May 11, 5:55 pm, Stephen Bohlen <[email protected]> wrote:
> Simon:
>
> No, RM has no facility to generate random test values (unless of course you
> were to set an expectation that "when X is called, return Random.Next()" and
> yes, you're doing it right.
>
> The reason you want to "bother" with mocking in the first place is so that
> consumers of your service can code to the interface (IAccountService) and
> then in production call the 'real' implementation of IAccountService and in
> tests call the mocked/stubbed implementation of IAccountService (pretty much
> as you are doing it now).  The reason you want to "bother" with RM (or any
> other mocking framework) isn't often all that clear in so simple a use-case
> as this where you could almost just as easily create your own "public class
> MyMockAccountService : IAccountService" and "dummy up" your own
> implementation of the GetAccount() method.
>
> The power of RM (even in this use case) comes when your IAccountService
> interface grows over time and you would have to keep returning to all your
> own dummy IAccountService implementations and 'update them' to reflect the
> new methods on the interface or if/when it becomes important to you to
> verify that GetAccount() was called, called a specific number of times,
> called with a specific set of arguments, etc., etc.  You could also add
> methods to "MyMockAccountService" with signatures like "bool
> WasCalled(string methodName, int times)" and then keep track of all that
> consumption "state" within your MyMockAccountService class, but this gets
> pretty old pretty fast (esp. if you have all kinds of different custom impls
> of IAccountService out there to support all kinds of different test
> scenarios you are interested in).
>
> Its all *that* goo that you don't want/need to concern yourself with when
> writing your tests that something like RM makes much less painful.
>
> Does this help make more sense of it for you --?
>
> Steve Bohlen
> [email protected]http://blog.unhandled-exceptions.comhttp://twitter.com/sbohlen
>
> On Wed, May 11, 2011 at 12:26 PM, simo <[email protected]>wrote:
>
>
>
> > Hi,
>
> > I have been waiting to use a mocking framework for a while,
> > particuarly for mocking the service layer. The attraction being that
> > the client developers do not need to wait for completion of a service
> > operation before they can start testing binding in the client code.
> > This in effect allows parallel development of service and client based
> > code, allowing the client to get data via a mock service without
> > having to go via a real service to the db.
>
> > After choosing Rhino Mocks as the framework of choice, I successfully
> > set up some client test code, whereby a mock service operation returns
> > test data to the client. Below is an example of such code, in which I
> > have basically mocked a service operation GetAccounts, which returns
> > IEnumerable<Account>. Account being a simple user object with simple
> > data types as properties (i.e. ints strings).
>
> > My questions regarding this are as follows:
> > 1) Here I am pre populating the data for rhino to return (in the set
> > up data code region). Is is possible to get Rhino to generate this
> > data randomly, i.e. a random number of accounts, all with random int
> > and string properties already populated with random string/int values?
> > 2) If the above is not possible, then I am trying to understand the
> > point of using rhino in this instance, as surely I could just create a
> > list of  IEnumerable<Account>, without having to additionally exposing
> > them via a mocked service, thus halving the code below?
>
> > I realise that perhaps my example is not the best way to mock services
> > and so would be very willing to hear any different suggestions, as am
> > sure can use a lot more of the power in Rhino particuarly with regard
> > to test data, as I need to get 'buy in' from client development
> > department and the example given may be seen as verbose and
> > unecessary?
>
> > Kind Regards
>
> > Simon
>
> > Code is below, which simply creates 5 test accounts and returns them
> > as part of the mocked service call:
>
> >            #region setup test data
> >             List<Account> ACV = new
> > System.Collections.Generic.List<Account>();
> >             Account account = null;
> >             int accountcount = 5;
> >             IEnumerable<Account> accounts = null;
>
> >             for (int i = 0; i < 5; i++)
> >             {
> >                 account = new Account()
> >                  {
> >                      AccountCode = "",
> >                      AccountID = 123,
> >                      AccountName = ""
> >                  };
> >                 ACV.Add(account);
> >             }
> >             accounts = ACV;
> >            #endregion
>
> >            #region call mock service
> >             MockRepository mocks = new MockRepository();
> >                IAccountService MockAccountService =
> > mocks.CreateMock<IAccountService>();
> >                using (mocks.Record())
> >                {
>
> > Expect.Call(MockAccountService.GetAccount()).Return(accounts);
> >                }
> >                using (mocks.Playback())
> >                {
> >                    IEnumerable<Account> ac =
> > MockAccountService.GetAccount();
> >                    Assert.IsTrue(ac.Count() == 5);
> >                }
> >             #endregion
>
> > --
> > 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.

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