开发者

How to mock protected virtual members with Rhino.Mocks?

Moq allows developers to mock protected members. I was looking for the same functionality in Rhino.Mocks but fa开发者_高级运维il to find it.

Here's an example from Moq Quick Start page how to mock protected method.

// 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);

Let me know if I'm chasing something that doesn't exit.


I believe this functionality does not exist in Rhino Mocks.

Why are you trying to mock protected members? Why not just test the class as a whole? Alternatively you can create a subclass of your test class and create "mocked" protected methods manually.


We create the protected method as internal, and then expose the internals to the unit testing project and rhino mocks by adding the following lines to your AssemblyInfo:

[assembly: InternalsVisibleTo("YourNamespace.TestProjectName")]
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

works a treat for us

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜