![](/img/trans.png)
[英]how to unit test a delete method using JustMock lite and MSTest?
[英]how to unit test a delete method using JustMock lite
我剛剛開始進行單元測試,現在卻堅持編寫刪除的測試方法。 我正在使用JustMock。 下面我提到了我的控制器動作方法和測試方法,但是測試方法不起作用。 該方法的返回值不保留它總是返回false。 請在這里指導我做錯了什么。
這是測試方法。
[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");
}
我希望我提供了足夠的信息。 任何幫助,不勝感激。
更改:
Mock.Arrange(() => UserRepository.DeleteUser(mockUser)).Returns(new OperationStatus { Status = true }).MustBeCalled();
至:
Mock.Arrange(() => UserRepository.DeleteUser(mockUser)).IgnoreArguments().Returns(new OperationStatus { Status = true }).MustBeCalled();
或者,將相等運算符添加到User,以使模擬用戶和selectedUser是“相同的”。 或使用lambda進行參數匹配(請參見http://www.telerik.com/blogs/handling-arguments-in-justmock-arrangements )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.