ユニットテストプロジェクトを使用してユーザー登録メソッドテストを作成します。私はテストケースをファイル実行したとき、それは****クラスのデフォルトコンストラクタを取得できませんUnitTestingのMockフレームワークでNULL値が返される
言い、上記のコードで
[TestClass] public class PersonRegistration { private ILoggingService _loggingService; private IUserManager _userManager; public PersonRegistration(IUserManager userManager, ILoggingService loggingService) { this._userManager = userManager; this._loggingService = loggingService; } [TestMethod] public void TestMethod1() { RegisterBindingModel model = new RegisterBindingModel(); AccountController ac = new AccountController(_userManager, _loggingService); model.UserName = "[email protected]"; var result = ac.Register(model); Assert.AreEqual("User Registered Successfully", result); }
下のコードを参照してください。Test.Controllers.PersonRegistraion
この問題を解決するために、パラメータなしでデフォルトのコンストラクタを追加しました。最初の問題が解決しました。しかし、_userManager
と_loggingService
はNULLになります。画像1
それは、null参照の例外がスローされます(画像2)
は、だから私は部品番号(Using Moq
)を使用し、下記のようなインターフェースを埋めるために参照してください。
[TestClass]
public class PersonRegistration
{
[TestMethod]
public void TestMethod1()
{
var mockService = new Mock<ILoggingService>();
var mockManager = new Mock<IUserManager>();
RegisterBindingModel model = new RegisterBindingModel();
AccountController ac = new AccountController(mockManager.Object, mockService.Object);
model.UserName = "[email protected]";
var result = ac.Register(model);
Assert.AreEqual("User Registered Successfully", result);
}
}
今すぐコードがRegister()
まで横断し、しかし、それはNULL
として結果を返します。 Mockオブジェクトが無効なためですか?私はWebApiプロジェクト内でプロセス全体を適切に実行できます。しかし、Unit Testプロジェクトでも同じシナリオがnullを返します。
インタフェースIUserManager
public interface IUserManager : IDisposable
{
Task<string> Register(RegisterBindingModel model);
}
ありがとうございます。私は別のテストクラスの中にいます。そして、あなたが与えた上記コードをどこに置くことができますか? –
あなたのテストメソッドの次の文の直後に:var mockManager = new Mock(); –
ashin
'が返されました(新しい結果());' 'Result()'が見つかりませんでした。 –