Moq允许开发人员模拟受保护的成员。我在Rhino.Mocks中寻找相同的功能,但未能找到它。
以下是Moq Quick Start页面如何模拟受保护方法的示例。
// at the top of the test fixture
using Moq.Protected()
// in the test
var mock = new Mock<CommandBase>();
mock.Protected()
.Setup<int>("Execute")
.Returns(5);
// if you need argument matching, you MUST use ItExpr rather than It
// planning on improving this for vNext
mock.Protected()
.Setup<string>("Execute",
ItExpr.IsAny<string>())
.Returns(true);
如果我正在追逐不退出的东西,请告诉我。
答案 0 :(得分:4)
我相信Rhino Mocks中不存在此功能。
你为什么试图嘲笑受保护的成员?为什么不直接测试这个班级呢?或者,您可以创建测试类的子类并手动创建“模拟”受保护方法。
答案 1 :(得分:2)
我们将protected
方法创建为internal
,然后通过将以下行添加到AssemblyInfo中,将内部公开给单元测试项目和rhino mocks:
[assembly: InternalsVisibleTo("YourNamespace.TestProjectName")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
为我们服务