簡體   English   中英

如何使用JustMock lite對刪除方法進行單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM