关于c#:如何对静态类Rhino mocks进行单元测试

How to unit test static class Rhino mocks

我有遗留代码,我需要在不更改的情况下进行单元测试。某些部分不可测试。我正在使用 Rhinomocks,我被困在如何创建静态类的模拟并验证对它的任何期望。这是示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  public static class BadGuy
{
    private static event Badevent;

}

public class GoodGuy
{
    public GoodGuy()
    {
        BadGuy.Badevent += GoodGuyBadluck;
    }

    private GoodGuyBadluck()
    {
    ....
    }

}

RhinoMocks 不会模拟静态类。如果您可以抽象静态类,以便它们位于可模拟类中,那么您可以使用 Microsoft Moles、TypeMock 或 JustMock 等框架来模拟它们。


如果您可以从单元测试中排除静态类,您可以创建一个假实现并插入您自己的Stubbing来监控活动。像这样的东西:

1
2
3
4
5
6
7
8
9
10
11
///
/// My fake implementation
///
public static class BadGuy
{
    private static event Badevent;
    public static void TriggerEvent()
    {
         Badevent();
    }
}