わかりました、奇妙な問題があります。
C# テスト プロジェクトで NUnit と Moq を使用しています。本当の問題は UserManager.AddUser() が適切に実行されていないことにあるため、モックオブジェクトは無視できると思います。
次のコードは、UserManager.AddUser() の開始時にブレークポイントに到達しないため、NullPointerException によりアサーションで失敗します。
[Test]
enter code here
public void AddUser_NoPassword_GeneratesPassword()
{
//assert
var userRepositoryFake = new Mock<IUserRepository>();
userRepositoryFake.Setup(x => x.GetUser(It.IsAny<string>(), It.IsAny<bool>())).Returns((User)null);
userRepositoryFake.Setup(x => x.SaveUser(It.IsAny<User>())).Returns(new Mock<User>().Object);
var userManager = new UserManager(userRepositoryStub.Object);
var createUserViewModel = new CreateUserViewModel { Username = "username" };
//act
var validationErrors = userManager.AddUser(createUserViewModel);
//assert
Assert.IsNotNullOrEmpty(createUserViewModel.Password);
}
ただし、このアサーションを追加すると:
//assert
Assert.IsEmpty(validationErrors); //new assertion
Assert.IsNotNullOrEmpty(createUserViewModel.Password);
AddUser() のブレークポイントに到達し、テストは成功します。戻り値が何かに使用されない限り、テストは AddUser() をまったく実行しないようです。