在運行 Azure 服務總線方法 SendAsync 的單元測驗時,我在行上得到以下例外_queueClient.Verify():
對模擬的預期呼叫至少一次,但從未執行過:x => x.SendAsync({MessageId:})
這是我的單元測驗:
public CustomerSendMsg(){ } //ctor
public async Task ShouldSendMessage()
{
var _queueClient = new Mock<IQueueClient>();
var _sut = new Publisher(_queueClient.Object);
var customer = new Customer()
{
FirstName = "John",
LastName = "Doe"
};
_queueClient.Setup(t => t.SendAsync(It.IsAny<Message>())).Returns(Task.CompletedTask).Verifiable();
await _sut.SendMessageAsync(customer);
var messageBody = JsonSerializer.Serialize(customer);
var msg = new Message(Encoding.UTF8.GetBytes(messageBody));
_queueClient.Verify(t = > t.SendAsync(msg));
}
這是來自 Publisher 類的 SendMessageAsync 方法:
public async Task SendMessageAsync<T>(T obj)
{
var messageBody = JsonSerializer.Serialize(obj);
var msg = new Message(Encoding.UTF8.GetBytes(messageBody));
await _queueClient.SendAsync(msg);
}
你知道我怎樣才能使這個單元測驗作業嗎?
uj5u.com熱心網友回復:
而不是創建一個由于參考不同而無法作業的新訊息物件 - 您可以body從Message類中解碼屬性并驗證客戶物件的屬性。
uj5u.com熱心網友回復:
無需進行物件比較(這是 Moq 正在做的事情),您可以使用It.Is<T>.
_queueClient.Verify(t = > t.SendAsync(It.Is<byte[]>(x => x.Body == Encoding.UTF8.GetBytes(messageBody)));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/408316.html
標籤:
