I’m kinda new to Unit testing and Moq, and I’m struggling to test the following code:
<code>public void SendObject()
{
/* Some operations */
SendAsync(text)
}
private async Task SendAsync(string text)
{
var sender = _senderCreator.CreateSender(_config.SomeValue)
sender.SendMessageAsync(text)
sender.CloseAsync()
}
</code>
<code>public void SendObject()
{
/* Some operations */
SendAsync(text)
}
private async Task SendAsync(string text)
{
var sender = _senderCreator.CreateSender(_config.SomeValue)
sender.SendMessageAsync(text)
sender.CloseAsync()
}
</code>
public void SendObject()
{
/* Some operations */
SendAsync(text)
}
private async Task SendAsync(string text)
{
var sender = _senderCreator.CreateSender(_config.SomeValue)
sender.SendMessageAsync(text)
sender.CloseAsync()
}
My idea in general terms it’s verify that sender.CloseAsync() was executed but, so far, I haven’t been able to do it.
I tried mocking CreateSender and the sender method calls, but no luck.
Didn’t even expected it to work to be honest, but I had to try something.
<code>_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);
</code>
<code>_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);
</code>
_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);
I suppose this needs a refactor, but I’m not able to do that so…
Any suggestions?