c# - 如何使用 NSubstitute 模拟惰性类

标签 c# unit-testing mocking lazy-evaluation nsubstitute

//Assert
Lazy<INotificationService> notificationService = Substitute.For<Lazy<INotificationService>>();
Service target = new Service(repository, notificationService);

//Act
target.SendNotify("Message");

//Arrange
notificationService.Received().Value.sendNotification(null, null, null, null);

以上代码抛出异常。

The lazily-initialized type does not have a public, parameterless constructor

我正在使用 C# 4.0 和 NSubstitute 1.2.1

最佳答案

根据@sanosdole 的评论,我建议使用真正的 Lazy 实例来返回您的替代品。像这样的东西:

var notificationService = Substitute.For<INotificationService>();
var target = new Service(repository, new Lazy<INotificationService>(() => notificationService));

target.SendNotify("Message");

notificationService.ReceivedWithAnyArgs().sendNotification(null, null, null, null);

关于c# - 如何使用 NSubstitute 模拟惰性类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119482/

相关文章:

c# - 如何使用 ASP.NET 技术检查请求是否来自本地主机

c# - 使用 HTTPS 和 httpWebRequest

python - 如何在运行 Django 测试之前加载测试 yaml 文件?

python - 从自定义管理命令运行 Django 单元测试

C# Visual Studio 单元测试,模拟客户端 IP 地址

c# - 条件 DataGridView 到 DataTable 的转换

javascript - 对包含未编译的 $watch() 的 AngularJS 指令进行单元测试

mocking - 是否有任何工具可以自动 stub 模拟对象响应? (使用 jmock、mockito 或 easy mock)

c++ - Gtest : mocking free function in a constructor

java - Lotus Domino C# LtpaToken 类