Ayende @ Rahien

Refunds available at head office

Rhino Mocks 3.0: Beta 2 Released

Took a bit longer than I anticipated, since people found some really hard bugs with regards to the generics support. I now know a lot more than I ever wanted to about generics, and I considered myself an expert before-hand.

Anyway, the new bits have:

  • Improved support for wacky generics scenarios. Thanks to James and¬†Thierry.
  • Better support for types having non inheritable attributes that cannot be easily replicated. Thanks to Aaron.
  • Better support for types¬†implementing interfaces by using a base class that is located in another assembly.* Thanks to Aaron.
  • Included XML Documentation files.
  • All merged assemblies are not marked internal, to save your from collisions if you are using the Castle bits yourself.

Changes:

The CallOriginalMethod() was deprecated, you are now encouraged to use CallOriginalMethod(OriginalMethodOptions.NoExpectation) or CallOriginalMethod(OriginalMethodOptions.CreateExpectation) instead. The reasoning behind the change is that currently CallOriginalMethod looks like it create an expectation, but it doesn't really does it, s it is better to be explicit about the whole thing. Thanks for Enrst for pointing it out to me.

As usual, the binaries and source are here.

* If you understood what that meant...

Comments

Andrew
02/25/2007 06:54 AM by
Andrew

The .zip appears to be corrupt (only ~104 KB?)

David Newman
02/25/2007 07:39 AM by
David Newman

I'm so glad we've got generics support now, I can get rid of a bunch of classes with this!

Can I make a feature request? Can you add a property to the MockRepository that tells me if it's in record or replay state? I have some testfixtures where the teardown does a VerifyAll, but occasionaly a test will slip in that doesn't make any expectations, so I have to call mocks.ReplayAll() in it otherwise i get an exception in the TearDown

Ayende Rahien
02/25/2007 07:52 AM by
Ayende Rahien

@Andrew,

It should be that small, yes.

If you got a corrupt file, please download again, I just verified that it works.

Ayende Rahien
02/25/2007 07:54 AM by
Ayende Rahien

@David,

There is no such state as Record/Replay for the whole repository, only for a single mock object.

What I tend to do for the TearDown is just put:

mocks.ReplayAll();

mocks.VerifyAll();

ReplayAll will move all those that are in record state to replay mode, which will make Verify happy.

David Newman
02/25/2007 08:02 AM by
David Newman

Now I feel stupid! Thanks Ayende

Andrew
02/25/2007 08:38 AM by
Andrew

Thanks Ayende. Download now fine - but get the error:

Access is denied: 'Castle.DynamicProxy.AbstractInvocation'.

Repro with:

public interface ICanMock { void SomeMethod(); }


[TestFixture]

public class CanMockFixture

{

    [Test]

    public void TesCanMock()

    {

        MockRepository repository = new MockRepository();

        ICanMock canMock = repository.CreateMock<ICanMock>();

    }

}
Ayende Rahien
02/25/2007 08:55 AM by
Ayende Rahien

Opps, that was my mistake.

Please try again, it should work now.

Andrew
02/25/2007 09:14 AM by
Andrew

Great - that's worked. Cheers.

Nick
02/26/2007 03:18 AM by
Nick

I tried to download as well and got:


Compressed (zipped) Folders Error


The Compressed (zipped) Folder is invalid or corrupted.


OK


Ayende Rahien
02/26/2007 06:21 AM by
Ayende Rahien

Please try now, and tell me if the problem persists.

JCichocki
03/05/2007 10:44 PM by
JCichocki

I am also having the problem downloading the zip, I also get zip is corrupt.

Comments have been closed on this topic.