有办法最小起订量吗?

问题描述 投票:0回答:1

我对单元测试和起订量有点陌生,我正在努力测试以下代码:

public void SendObject()
{
   /* Some operations */
   SendAsync(text)
}

private async Task SendAsync(string text)
{
   var sender = _senderCreator.CreateSender(_config.SomeValue)
   sender.SendMessageAsync(text)
   sender.CloseAsync()
}

我的一般想法是验证 sender.CloseAsync() 是否已执行,但到目前为止,我还无法做到这一点。 我尝试模拟 CreateSender 和发送者方法调用,但没有运气。 老实说,我什至没想到它会起作用,但我必须尝试一些东西。

_senderCreator.Setup(x => x.CreateSender(It.IsAny<string>())).Returns(new SenderInstance());

senderMock.Setup(x => x.SendMessageAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
          .Returns(Task.CompletedTask);

senderMock.Setup(x => x.CloseAsync(It.IsAny<CancellationToken>())).Returns(Task.CompletedTask);

我想这需要重构,但我无法做到这一点......

有什么建议吗?

c# unit-testing moq
1个回答
0
投票

问题是您返回的是实际实例而不是模拟对象。

_senderCreator.Setup(x => x.CreateSender(It.IsAny<string>())).Returns(senderMock);

假设

senderMock
模拟
ISenderInstance
,以便它可以与发件人类型正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.