Maybe your email client messed up the link.  It worked for me.

Try this one: http://tinyurl.com/72p3fjp

---
Patrick Steele
http://weblogs.asp.net/psteele



On Fri, Nov 18, 2011 at 4:43 PM, Laksh <[email protected]> wrote:
> that link doesnt work..and also just to be sure i'm using version
> 3.6.0.0
>
> On Nov 18, 3:29 pm, Stephen Bohlen <[email protected]> wrote:
>> I always recommend people take a look at this for 
>> referencehttps://raw.github.com/JonKruger/RhinoMocksExamples/master/src/RhinoM...
>> its (reasonably) up-to-date and is also (reasonably) comprehensive.
>>
>> Steve Bohlen
>> [email protected]http://blog.unhandled-exceptions.comhttp://twitter.com/sbohlen
>>
>>
>>
>> On Fri, Nov 18, 2011 at 3:53 PM, Laksh <[email protected]> wrote:
>> > Thank you very much. Is there any documentation/ examples on how to do
>> > this stuff. I was using this pdf at
>>
>> >http://ayende.com/wiki/GetFile.aspx?File=Rhino+Mocks+3.3+Quick+Refere...
>> > but its not comprehensive.
>>
>> > Also on the same topic, How do i test for each loop below?
>>
>> > public void DoWork(UserDocumentPackage userDocumentPackage)
>> >        {
>> >            var packageDetails =
>> > userDocumentPackage.GetPackageDetails();
>> >            if (packageDetails != null)
>> >            {
>> >                IList<PackageDocument> documents = new
>> > List<PackageDocument>();
>> >                foreach (UserDocumentPackageDetail packageDetail in
>> > packageDetails)
>> >                {
>> >                    PackageDocument packageDocument = new
>> > PackageDocument();
>> >                    packageDocument.FileName =
>> > packageDetail.GetUserDocumentNameWithNewExtension(".pdf");
>> >                    packageDocument.PrintOrder =
>> > packageDetail.SequenceNumber;
>> >                    packageDocument.PaperType =
>> > DocumentPaperType.White;
>> >                    packageDocument.OverlayText = "some text";
>> >                    packageDocument.OverlayTextAngle = 45;
>> >                    packageDocument.ImageReduction = 10;
>> >                    packageDocument.Duplex = true;
>> >                    documents.Add(packageDocument);
>> >                }
>> >                package.Documents = documents.ToArray();
>> >            }
>> >        }
>> > On Nov 11, 3:47 am, Gavin van der Merwe <[email protected]>
>> > wrote:
>> > > Furthermore if you wanted to mock something like
>> > > HttpContext.Current.Server.MapPath(.NET Classes/Types) you would have to
>> > > wrap it in a class and make the member that does this work virtual ..
>>
>> > >  public interface IHttpContextService
>>
>> > >     {
>>
>> > >         string MapPath(string webUrl);
>>
>> > >     }
>>
>> > >     public class HttpContextService : IHttpContextService
>>
>> > >     {
>>
>> > >         public string MapPath(string webUrl)
>>
>> > >         {
>>
>> > >             return HttpContext.Current.Server.MapPath(webUrl);
>>
>> > >         }
>>
>> > >     }
>>
>> > >     public class ThingWhatUsesMapPath
>>
>> > >     {
>>
>> > >         private readonly IHttpContextService contextService;
>>
>> > >         public ThingWhatUsesMapPath(IHttpContextService contextService)
>>
>> > >         {
>>
>> > >             this.contextService = contextService;
>>
>> > >         }
>>
>> > >         public string ThingWhatDoesStuff(string mapIt)
>>
>> > >         {
>>
>> > >             return contextService.MapPath(mapIt);
>>
>> > >         }
>>
>> > >     }
>>
>> > >     [TestFixture]
>>
>> > >     public class ThingWhatUsesMapPathTests
>>
>> > >     {
>>
>> > >         [Test]
>>
>> > >         public void ThingWhatDoesStuff_should_MapPath()
>>
>> > >         {
>>
>> > >             var fakeContextService = MockRepository.GenerateStub<
>> > > IHttpContextService>();
>>
>> > >             var objectUnderTest = new ThingWhatUsesMapPath
>> > > (fakeContextService);
>>
>> > >             objectUnderTest.ThingWhatDoesStuff("AnyPath");
>>
>> > >             fakeContextService.AssertWasCalled(x => x.MapPath(Arg<string
>>
>> > > >.Is.Equal("AnyPath")));
>>
>> > >         }
>>
>> > >     }
>>
>> > > On 10 November 2011 23:33, Stephen Bohlen <[email protected]> wrote:
>>
>> > > > Only if the methods in the concrete class are declared virtual.  The
>> > two
>> > > > kinds of things that can be mocked with RhinoMocks are:
>>
>> > > > 1) interfaces
>> > > > 2) virtual methods in unsealed classes
>>
>> > > > Steve Bohlen
>> > > > [email protected]
>> > > >http://blog.unhandled-exceptions.com
>> > > >http://twitter.com/sbohlen
>>
>> > > > On Thu, Nov 10, 2011 at 6:10 PM, Laksh <[email protected]> wrote:
>>
>> > > >> correct..but not all the classes in .Net or my custom classes are
>> > > >> sealed. You are saying if the class is not sealed, i can mock it
>> > > >> without having the interface?
>>
>> > > >> On Nov 10, 3:27 pm, Patrick Steele <[email protected]> wrote:
>> > > >> > Mocking an interface is easier.  You can mock the virtual members
>> > of a
>> > > >> > non-sealed class.  If a class is sealed or the members you want to
>> > > >> > mock are not virtual, you'll have to create a wrapper (possibly in
>> > the
>> > > >> > form of an interface) in order to do your mocking.
>>
>> > > >> > ---
>> > > >> > Patrick Steelehttp://weblogs.asp.net/psteele
>>
>> > > >> > On Thu, Nov 10, 2011 at 3:07 PM, Laksh <[email protected]> wrote:
>> > > >> > > Thanks.
>> > > >> > > I'm new rhino mocks and never used it before..so the questions.
>> > > >> > > One last question. Is it necessary to derive all the classes from
>> > some
>> > > >> > > kind of interface? How do we mock .Net classes?
>> > > >> > > for example
>> > > >> > > MockRepository mocks = new MockRepository();
>> > > >> > >            var myClass = mocks.Stub<MyClass>();
>> > > >> > >            var list = mocks.DynamicMock<Array>();
>>
>> > > >> > > On Nov 10, 11:51 am, Patrick Steele <[email protected]>
>> > wrote:
>> > > >> > >> Correct.  Mocking only works if you control creation of the
>> > object.
>>
>> > > >> > >> ---
>> > > >> > >> Patrick Steelehttp://weblogs.asp.net/psteele
>>
>> > > >> > >> On Thu, Nov 10, 2011 at 12:41 PM, Gavin van der Merwe
>>
>> > > >> > >> <[email protected]> wrote:
>> > > >> > >> > I think Patrick is saying that mocking MyClass this way is not
>> > > >> possible.
>> > > >> > >> > You need to structure your class in a de-coupled way ...
>> > > >> > >> > public class ClassThatDoesWork
>> > > >> > >> > {
>> > > >> > >> >    private MyClass instance;
>> > > >> > >> >    public ClassThatDoesWork(MyClass instance)
>> > > >> > >> >    {
>> > > >> > >> >       this.instance = instance;
>> > > >> > >> >    }
>> > > >> > >> >    public void DoWork(someInputParameters)
>> > > >> > >> >    {
>> > > >> > >> >      // do stuff with mocked instance
>> > > >> > >> >    }
>> > > >> > >> > }
>>
>> > > >> > >> > On 10 November 2011 17:31, Laksh <[email protected]> wrote:
>>
>> > > >> > >> >> Thanks, i'll would do that, and we are using Repository
>> > pattern,
>> > > >> so
>> > > >> > >> >> its easy change.
>>
>> > > >> > >> >> i have a question though. In my scenario the method returns
>> > the
>> > > >> > >> >> Package class so the caller of this method knows Package
>> > class.so
>> > > >> i'm
>> > > >> > >> >> able to Assert the values.
>> > > >> > >> >> If i have a method which internally creates instance of class,
>> > > >> would
>> > > >> > >> >> it be possible to mock that class. see the example below
>>
>> > > >> > >> >> public void DoWork(someInputParameters)
>> > > >> > >> >> {
>> > > >> > >> >>   MyClass instance = new MyClass()
>> > > >> > >> >>   // do some logic here.
>> > > >> > >> >>   // I  may use some .Net classes also to perform the logic
>> > > >> > >> >> }
>>
>> > > >> > >> >> is it possible to mock MyClass & .Net classes here ?
>>
>> > > >> > >> >> On Nov 10, 10:18 am, Patrick Steele <[email protected]
>>
>> > > >> wrote:
>> > > >> > >> >> > You want to make sure you have a loosely coupled
>> > architecture
>> > > >> so you
>> > > >> > >> >> > can do your unit tests in isolation.
>>
>> > > >> > >> >> > The Manifest class you originally showed looks like it
>> > needs to
>> > > >> get
>> > > >> > >> >> > data from a database (The GetData method).  That dependency
>> > on a
>> > > >> > >> >> > database should be in a different component.  One idea is to
>> > > >> create a
>> > > >> > >> >> > repository interface for accessing the data:
>>
>> > > >> > >> >> > interface IDataObjectRepository
>> > > >> > >> >> > {
>> > > >> > >> >> >     DataObject GetData(IContext);
>>
>> > > >> > >> >> > }
>>
>> > > >> > >> >> > Your Manifest class now has a dependency on the
>> > > >> IDataObjectRepository
>> > > >> > >> >> > which can be mocked at test time using Rhino.Mocks.  This
>> > way
>> > > >> you
>> > > >> > >> >> > don't have to have an actual database up and running to
>> > execute
>> > > >> your
>> > > >> > >> >> > unit test for BuildManifest().  You don't have to worry
>> > about
>> > > >> proper
>> > > >> > >> >> > table structures and things like that.
>>
>> > > >> > >> >> > So iyour Manifest class now takes in the repository:
>>
>> > > >> > >> >> > public class Manifest : IManifest<Package>
>> > > >> > >> >> > {
>> > > >> > >> >> >     private IContext _context = null;
>> > > >> > >> >> >         private IDataObjectReposutory _repository = null;
>>
>> > > >> > >> >> >         public Manifest(IContext context,
>> > IDataObjectReposutory
>> > > >> > >> >> > repository)
>> > > >> > >> >> >         {
>> > > >> > >> >> >             _context = context;
>> > > >> > >> >> >                 _repository = repository;
>> > > >> > >> >> >         }
>>
>> > > >> > >> >> >         public Package BuildManifest()
>> > > >> > >> >> >         {
>> > > >> > >> >> >                 ...
>> > > >> > >> >> >                 DataObject data =
>> > _repository.GetData(_context);
>> > > >> > >> >> >                 ...
>> > > >> > >> >> >         }
>>
>> > > >> > >> >> > }
>>
>> > > >> > >> >> > Now you can mock your context and repository and test to
>> > make
>> > > >> sure
>> > > >> > >> >> > that your Package gets built properly based on the data
>> > > >> returned by
>> > > >> > >> >> > IDataObjectRepository.GetData():
>>
>> > > >> > >> >> > // arrange
>> > > >> > >> >> > var context = MockRepository.GenerateStub<IContext>();
>> > > >> > >> >> > var repository =
>> > > >> MockRepository.GenerateStub<IDataObjectRespository>();
>> > > >> > >> >> > var do = new new DataObject { BatchID = "100", Title="Test"
>> > };
>> > > >> > >> >> > repository.Stub(r => r.GetData(context)).Returns(do);
>>
>> > > >> > >> >> > // act
>> > > >> > >> >> > var manifest = new Manifest(context, repository);
>> > > >> > >> >> > var pacakgeManifest = manifest.BuildManifest();
>>
>> > > >> > >> >> > // assert
>> > > >> > >> >> > Assert.AreEqual(do.BatchID, packageManifest.BatchID);
>> > > >> > >> >> > Assert.AreEqual(do.Title,
>>
>> ...
>>
>> 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.
>
>

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