这是我的问题测试:
[Test]
public void PlayerHasPointsIncreasedOnEnterByFifteen() {
// Arrange.
var playerOneFake = new Mock<IEntity>();
playerOneFake.SetupGet(p => p.Score).Returns(0);
var pointState = new PointState(playerOneFake.Object);
// Act.
pointState.Enter();
// Assert
IEntity entity = playerOneFake.Object;
Assert.AreEqual(15, entity.Score, "Player score is incorrect");
}
p.Score 只需要返回零一次——我第一次在 PointState 中检查它。在此之后,我需要一个非模拟版本来检查断言中的实际分数是否已增加。
我知道您可以验证一定次数 - 例如Times.Once() 但如何在设置中使用此功能?
有什么想法吗?这让我发疯。
干杯。
最佳答案
您似乎在测试 Mock 对象的属性的返回值,这并不能真正证明任何事情。相反,当您调用 PointState 对象的 Enter 方法时,您应该测试 PointState 对象是否对 IEntity 进行了预期的调用(可能设置 Score 属性?)。
假设它设置了一个 Score 属性,你会做类似的事情
entity.VerifySet(x => x.Score = 15);
关于c# - 最小起订量 - 最小起订量只有效一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1668985/