我剛剛開始進行單元測試,現在停止編寫刪除測試方法。我正在使用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」屬性始終爲false不是我所指定的值是結果TestMethod的。
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
除了在這裏調用測試方法時設置忽略所有參數之外,其他解決此問題的其他方法都是如此。 –