単体テストを始めたばかりで、今は削除のテスト方法を書き留めています。私はJustMockを使用しています。以下では、コントローラの動作方法とテスト方法について述べましたが、テスト方法は機能していません。メソッドの戻り値は、常にfalseを返すことを保持していません。私がここで間違っていることについて私を案内してください。JustMock liteを使ってユニットを削除する方法をテストする方法
これはテスト方法です。
[TestMethod]
public void Delete_User()
{
Mapper.CreateMap<UserViewModel,User>();
IStaticMembershipService membershipRepository = Mock.Create<IStaticMembershipService>();
var mockUserViewModel = new UserViewModel { Id = 1};
var mockUser = Mapper.Map<UserViewModel, User>(mockUserViewModel);
var UserRepository = Mock.Create<IUserRepository>();
Mock.Arrange(() => UserRepository.DeleteUser(mockUser)).Returns(new OperationStatus { Status = true }).MustBeCalled();
UserController controller = new UserController(UserRepository, membershipRepository);
ActionResult result = controller.Delete(mockUserViewModel);
Mock.Assert(() => UserRepository.DeleteUser(mockUser), Occurs.AtLeastOnce());
}
関連するすべてのコントローラ情報。
private IUserRepository _UserRepository;
private IStaticMembershipService _membershipService;
public UserController(IUserRepository UserRepo, IStaticMembershipService membershipService)
{
_UserRepository = UserRepo;
_membershipService = membershipService;
}
リポジトリが正しく嘲笑されているが、「opStatus」プロパティが返されたばかり、私はのtestMethodにおける結果であると指定した値ではなく、常にfalseです。
public ActionResult Delete(UserViewModel usr)
{
var selectedUser = Mapper.Map<UserViewModel, User>(usr);
var opStatus = _UserRepository.DeleteUser(selectedUser);
if (!opStatus.Status)
throw new System.Web.Http.HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
return RedirectToAction("Index");
}
私は十分な情報を提供したと思います。どんな助けでも大歓迎です。
テストセットアップ中の 'mockUser'とテスト中のメソッドの 'selectedUser'は異なるインスタンスですので、テスト中のメソッドが実行されるときには一致しません。 – Nkosi
ここでtestメソッドを呼び出すときに、すべての引数を無視するように設定する以外は、この問題を解決する他の方法はありません。 –