小编Gen*_*e C的帖子

测试对象是否实现接口有什么问题?

这个答案的评论中,声明" 检查对象是否实现了界面 ,尽管可能是猖獗的,但这是件坏事 "

以下是我认为这种做法的一个例子:

public interface IFoo
{
   void Bar();
}

public void DoSomething(IEnumerable<object> things)
{
   foreach(var o in things)
   {
       if(o is IFoo)
           ((IFoo)o).Bar();
   }
}
Run Code Online (Sandbox Code Playgroud)

由于我的好奇心激起了以前曾使用过这种模式的变化,我搜索了一个很好的例子或解释为什么它是一件坏事并且无法找到它.

虽然我很可能误解了评论,但有人可以提供一个示例或链接来更好地解释评论吗?

c# oop polymorphism

30
推荐指数
4
解决办法
1458
查看次数

RhinoMocks:清除或重置AssertWasCalled()

如何验证在我的测试的"act"部分中调用mock,忽略在测试的"Arrange"部分中对mock的任何调用.

[Test]
public void ShouldOpenThrottleWhenDrivingHome()
{
    var engineMock = MockRepository.GenerateStub<IEngine>();
    var car = new Car(engineMock);
    car.DriveToGroceryStore(); // this will call engine.OpenThrottle

    car.DriveHome();

    engine.AssertWasCalled(e => e.OpenThrottle());
}
Run Code Online (Sandbox Code Playgroud)

我宁愿不尝试注入一个新的模拟或依赖.Repeat(),因为测试然后必须知道在设置中调用该方法的次数.

unit-testing rhino-mocks mocking

5
推荐指数
1
解决办法
1503
查看次数

标签 统计

c# ×1

mocking ×1

oop ×1

polymorphism ×1

rhino-mocks ×1

unit-testing ×1