【发布时间】:2021-09-09 14:49:40
【问题描述】:
我们有一个单元测试,它在这个单元内部引用了我服务中的另一个方法。我应该在当前单元测试中调用其他方法还是使用模拟解决方案?
在我的测试用例中,我们调用对方法ChooseDoor() 的引用来执行一些操作,然后我们调用Act 方法SwitchDoor(),我们应该使用一些模拟或者这种方法可以吗?因为我们调用的引用方法和行为,它们在同一个类中,对其他类没有任何依赖。
public class GameService
{
public Door ChoosesDoor()
{
//some logic
}
public Door SwitchDoor()
{
//some logic
}
}
[Fact]
public void switch_door_should_return_a_new_door_with_a_valid_state_that_chooses()
{
//Arrange
var oldChoosesDoor =_game.ChoosesDoor();
//Act
var newDoor = _game.SwitchDoor();
//Assert
oldChoosesDoor.DoorState.ShouldBe(State.Stateless);
newDoor.DoorState.ShouldBe(State.Chosen);
oldChoosesDoor.DoorState.ShouldNotBe(newDoor.DoorState);
oldChoosesDoor.Number.ShouldBeInRange(1,3);
}
【问题讨论】:
-
这取决于您要测试的具体内容。这是单元测试还是集成测试?
-
@HimBromBeere 这是单元测试。
-
嗯,你正在测试的基本上是
SwitchDoor对其类状态的副作用。这意味着您期望通话后的状态与通话前的状态有所不同。这意味着您需要两种表示方式才能说明调用是否具有预期效果... -
你可能不应该嘲笑你的 SuT。
-
@HimBromBeere 我们没有任何 Io 调用,只需要运行第一个方法,然后检查方法 2。这些方法在同一个类中。
标签: c# .net unit-testing asp.net-core testing