犀牛模拟:如何判断对象是嘲笑还是真实?

DMa*_*yer 7 c# rhino-mocks

给定一个对象o,我怎么能判断它是一个被模拟的还是一个真实的对象?

我能看到这样做的唯一方法看起来有点hacky:

public bool IsMockedObject(object o)
{
  try
  {
    o.GetMockRepository();
    return true;
  }
  catch(InvalidOperationException)
  {
    return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

请告诉我有更好的方法!

Bro*_*ass 13

您可以检查对象是否实现IMockedObject:

bool isMocked = o is Rhino.Mocks.Interfaces.IMockedObject;
Run Code Online (Sandbox Code Playgroud)

这当然需要引用RhinoMocks程序集,我会尽量避免使用您的生产代码.