c# - 最小起订量 - 最小起订量只有效一次

标签 c# unit-testing moq

这是我的问题测试:

    [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/

相关文章:

c# - 客户端 - 服务器或网络服务?

python - 在 python 中使用 Mocking 进行单元测试

unit-testing - 为从中读取的函数填充 os.Stdin

c# - 模拟流以读取字节[]

c# - 如何使用 moq 从 IConfiguration 模拟 GetConnectionString()?

c# - Xamarin Forms 中的后台计时器 [PCL]

c# - 在安全处理异常时避免第一次机会异常消息

c# - 使用 ASP.NET MVC 的 ViewBag foreach 循环中图像滑动不起作用

java - 如何获取在 testng 拆卸方法中运行的测试方法的名称?

c# - Moq - mock.Raise 应该在没有设置的情况下在测试单元中引发事件