簡體   English   中英

如何使用 Moq 模擬 UserRecord 內部 class 以進行 Firebase 單元測試

[英]How do I mock UserRecord internal class for Firebase unit testing with Moq

I want to write a unit test in C# using Moq for my code using Firebase SDK and specifically involving GetUserAsync(), eg UserRecord user = GetUserAsync(Uid) but am getting stuck on the Firebase UserRecord internal class. 鑒於 UserRecord class 具有只讀內部結構,我如何模擬它進行測試?

到目前為止我已經嘗試過:

var firebase = new Mock<IFirebaseAppWrapper>();
firebase
  .Setup(x => x.GetUserAsync(It.IsAny<string>()))
  .Returns<UserRecord>(usr =>
  {
    var item = new Mock<UserRecord>("1");
    return Task.FromResult(item.Object);
  });

當然這不起作用,但感覺很接近。 有什么建議嗎? 順便說一句:FirebaseApp 已通過 class 人為包裝,並具有對應的接口 class。

謝謝

您應該使用ReturnsAsync方法而不是Returns

Returns用於同步方法。 另一方面,如果您希望在等待調用后指定async方法的響應,則需要ReturnsAsync

編輯:

如果GetUserAsync返回一個UserRecord那么你可以實例化一個:

firebase
  .Setup(x => x.GetUserAsync(It.IsAny<string>()))
  .ReturnsAsync(new UserRecord("id"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM