BT

Your opinion matters! Please fill in the InfoQ Survey!

Rhino Mocks - Lambda Edition

| by Al Tenhundfeld Follow 0 Followers on Oct 07, 2008. Estimated reading time: less than one minute |
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 Stage
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.

Tell us what you think

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

Email me replies to any of my messages in this thread

.NET 3.5 enhancements? lol by Eugene Tolmachev

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

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

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

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

Email me replies to any of my messages in this thread

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

Email me replies to any of my messages in this thread

4 Discuss

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and don't miss out on content that matters to you

BT