unit testing委托方法

在unit testing中是否有任何一点方法,它唯一能做的就是委托另一个对象的工作? 例:

class abc { ... public void MoveLeft() { fallingPiece.MoveLeft(); } ... } 

出于学习目的,我正在为我现有的一些课程进行unit testing。 例如,为此MoveLeft()方法执行unit testing似乎有点奇怪。 但我不确定如何完成Test-First。

谢谢

如果我这样做,你的代码会破裂吗? 如果可以,那么你需要一个测试来捕获它。

 class abc { ... public void MoveLeft() { // fallingPiece.MoveLeft(); } ... } 

假设:abc是public / exposed类型,fallPiece是依赖。 如果这样,那么您需要一个测试来测试MoveLeft行为。 如果它不是公共类型,那么您需要对使用abc作为colloborator / dependency的公共类型XYZ进行测试。 您不直接测试它,但仍需要进行测试。

我对unit testing的理解是它们确保方法内部的逻辑在你不打算改变时保持不变,而且这个方法没有逻辑。 在我工作的代码库中,我们有很多传递方法。 表面上看,它们是“控制器”类,但在大多数情况下,它们只是传递到数据层。

是的,你可以对它们进行unit testing,假设你有办法模拟fallingPiece 。 如果您实际上计划将MoveLeft方法扩展为包含逻辑,那么这可能是一个好主意。

但是,就我上面的评论而言,在你真正需要引入围绕向左移动的逻辑之前,可能更好的方法是内联该方法。

此方法可能失败的一种情况是当调用Abc.MoveLeft时fallingPiece为null。 有一个构建一个合法的abc并调用abc.MoveLeft的测试用例可能是个好主意。 像CanMoveLeft(){Abc abc = new Abc(); abc.MoveLeft(); Assert.That(abc.fallingPice已经向左移动)}