
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
Community comments
.NET 3.5 enhancements? lol
by Eugene Tolmachev,
Re: .NET 3.5 enhancements? lol
by Al Tenhundfeld,
Re: .NET 3.5 enhancements? lol
by Eugene Tolmachev,
Re: .NET 3.5 enhancements? lol
by Al Tenhundfeld,
.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.
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.
Ah, that's a great point. Thanks for clarifying.