正在測驗的服務內部有以下代碼:
public SendNotificationAsync(SomeDataType payloadData)
{
...
var androidPayload = new AndroidNotification
{
Data = payloadData,
};
await _hubClient.SendFcmNativeNotificationAsync(androidPayload, tags);
...
}
該_hubClient是一個實體INotificationHubClient,其在此服務注入介面。
測驗的最小起訂量設定如下:
private readonly Mock<INotificationHubClient> _hubClient = new(MockBehavior.Strict);
public Task TestMethod()
{
var _notificationService = new NotificationService(_hubClient.object);
...
_hubClient
.Setup(s => s.SendFcmNativeNotificationAsync(It.Is<AndroidNotification>(a => a == androidPayload), It.Is<string[]>(s => s == stringArray)))
.ReturnsAsync(retVal)
.Verifiable();
...
await _notificationService.SendNotificationAsync(payloadData);
_hubClient.Verify();
}
當我運行測驗時,我收到以下錯誤:
Moq.MockException:Mock<INotificationHubClient:1>: 由于以下原因,此模擬驗證失敗:
INotificationHubClient s => s.SendFcmNativeNotificationAsync(It.Is<AndroidNotification>(a => a == AndroidNotification), It.Is<string[]>(s => s == ["userName1" , "userName2"])):此設定不匹配。
我使用時測驗通過,It.IsAny<AndroidNotification>()但我想檢查傳入的值,這就是為什么我更喜歡與當前使用的方法類似的方法。
uj5u.com熱心網友回復:
顯然,該錯誤與不正確的參考相等性檢查有關,測驗中傳遞的第二個 arg 引數是一個string[]型別,而該方法需要IEnumerable<string>傳遞a ,因為在這種情況下 Moq 正在檢查特定型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/343234.html
上一篇:com.android.builder.internal.aapt.v2.Aapt2Exception:Android資源編譯失敗
