簡體   English   中英

moq測試刪除的無效方法

[英]moq testing void method for Delete

我需要一些幫助來測試void方法。 有人可以解釋無效方法如何與測試一起工作。

我的服務如下:

public void DeleteUser(int userId)
 {
    var user = _dbcontext.Users.FirstOrDefault(usr => usr.Id == userId);
    {
        if (user != null)
        {
            _dbcontext.Users.Remove(user);
        }

    _dbcontext.SaveChanges();
    }
}




[TestClass]
public class UnitTest
{
    [TestMethod]
    public void DeleteUser()
    {
        mockContext = new Mock<UserService>();
        mockContext.SetUp(x => x.Users(It.IsAny<int>()).Returns(userid)
    }
}

無效方法可以做兩件事:

  1. 編輯狀態
  2. 調用其他方法

由於您的方法不直接編輯狀態,因此您要測試的是,如果找到用戶,則調用Remove和SaveChanges,否則就不調用任何東西。

Mock有一種特殊的Verify方法,您可以在兩種情況下使用。 這是如何驗證是否調用SaveChanges的示例(順便說一句,您可以將其放入其中):

mockContext
   .Verify(c => c.SaveChanges(), Times.Once());

或(如果用戶不存在):

mockContext
   .Verify(c => c.SaveChanges(), Times.Never());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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