我正在爲使用Entity Framework 6的C#MVC5項目構建單元測試。我試圖用Moq來模擬我的BlogRepository,然後將其用作我嘗試測試的BlogController的參數。實際上我的單元測試工作正常,但爲此,我創建了一個Fake BlogRepository類,當時我非常想知道如何使用Moq來完成它。如何模擬庫用作控制器的參數?
我得到的問題是,控制器希望參數是IBlogRepository類型,但只能將其視爲模擬。所以我得到一個無效的參數錯誤。我認爲這是它是如何被使用的。
,這裏是我創造的模擬嘗試:
Mock<IBlogRepository> blogRepo = new Mock<IBlogRepository>();
blogRepo.Setup(t => t.GetBlogByID(It.IsAny<int>())).Returns<Blog>(blog => new Blog());
這裏是控制器的開頭:
public class BlogController : Controller
{
IBlogRepository blogRepo;
public BlogController(IBlogRepository repoBlog)
{
blogRepo = repoBlog;
}
我在做什麼錯?或者我在這裏得到了錯誤的想法。任何幫助,將不勝感激。謝謝。
'IBlogRepository blogRepo' ...'IBlogRepository repoBlog' ...'blogRepo = repoBlog'您可能想考慮ReSharper的私人成員的命名約定,因此您不需要兩次命名相同的事物。 –