BT

InfoQ Homepage News Rhino Mocks - Lambda Edition

Rhino Mocks - Lambda Edition

Bookmarks
Ayende Rahien recently released version 3.5 of Rhino Mocks, the popular .NET mocking framework. This version marks a major change in the API. A new Arrange, Act, Assert syntax, which utilizes Lamba Expressions and Extension Methods. These additions bring to Rhino Mocks many of the innovations of Moq, another .NET mocking framework gaining popularity.

Rhino Mocks 3.5 Example:
[Test]
public void WhenUserForgetPasswordWillSendNotification_UsingExpect()
{
var userRepository = MockRepository.GenerateStub<IUserRepository>();
var notificationSender = MockRepository.GenerateMock<INotificationSender>();

userRepository.Stub(x => x.GetUserById(5)).Return(new User { Id = 5, Name = "ayende" });
notificationSender.Expect(x => x.Send(null)).Constraints(Text.StartsWith("Changed"));

new LoginController(userRepository, notificationSender).ForgotMyPassword(5);

notificationSender.VerifyAllExpectations();
}
New features in version 3.5:
  • Arrange, Act, Assert model
  • Lambda and C# 3.0 extensions
  • Inline constraints
  • Support for mocking interface in C++ that mix native and managed types.
  • Allow a mock object to return to record mode without losing its expectations
  • CreateMock was deprecated in favor of StrictMock
  • Better error handling in edge cases.
  • Fixed an issue with mocking internal classes and interfaces
  • New event raising syntax

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • .NET 3.5 enhancements? lol

    by Eugene Tolmachev /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    All these features are *language* features of C# 3.0 (as correctly stated in the features quote, not .NET features, Al.

  • Re: .NET 3.5 enhancements? lol

    by Al Tenhundfeld /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    All these features are *language* features of C# 3.0 (as correctly stated in the features quote, not .NET features, Al.

    Hi Eugene,


    You are completely correct.


    However, you'll notice I explicitly said .NET 3.5 language enhancements. Yes, it would have been more explicit for me to say, "C# 3.0 and VB.NET 9.0 language features," but it is extremely common to use the phrase .NET 3.5 language enhancements as a shorthand for new features common to the two primary .NET languages.



    I purposefully did not refer to lambda expressions or extension methods as .NET features; that would be incorrect and stupid.


    Thanks for your comment. I agree that specificity in terminology is important.

  • Re: .NET 3.5 enhancements? lol

    by Eugene Tolmachev /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    There reason I felt it warranted a comment is exactly in the fact that most people are not aware that you can use C# 3.0 even if you target 2.0 .NET framework. The distinction is important, because one might, for example, dismiss 3.5 RhinoMocks thinking that they can't use it if they are locked into .NET 2.0.

  • Re: .NET 3.5 enhancements? lol

    by Al Tenhundfeld /

    Your message is awaiting moderation. Thank you for participating in the discussion.

    ... most people are not aware that you can use C# 3.0 even if you target 2.0 .NET framework...one might, for example, dismiss 3.5 RhinoMocks thinking that they can't use it if they are locked into .NET 2.0.


    Ah, that's a great point. Thanks for clarifying.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.