Rhino Mocks 的 Lambda 版本

  • Al Tenhundfeld
  • 赵劼

2008 年 10 月 12 日

话题:.NET语言 & 开发

Ayende Rahien 最近

发布了流行的 Mock 框架“Rhino Mocks”的 3.5 版本

。这个版本在 API 方面做了很大改变。除了原有的“Record-Replay”语法外,框架依托

Lambda 表达式

扩展方法

引入了一个

新的“Arrange,Act,Assert”语法

。Rhino Mocks 的此次增强给

Moq

带来了许多革新,后者是另一个较为流行的.NET Mock 框架。

Rhino Mocks 3.5 版本的例子:

[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();

}

.NET语言 & 开发