【发布时间】:2015-06-17 13:36:01
【问题描述】:
我有一个声明实体框架数据库上下文的 EFDbContext。
我不需要它的接口,但显然 Moq 强迫我只能模拟接口。
有没有办法模拟一个具体的方法,但只是把它当作一个接口?
代码被破坏:
[TestClass]
public class EFBlogRepositoryTest
{
[TestMethod]
public void Test_GetAllBlogs()
{
// Arrange
DateTime now = DateTime.Now;
var mockDbContext = new Mock<EFDbContext>();
var blogRepository = new EFBlogRepository(mockDbContext.Object);
List<Blog> blogs = new List<Blog> {
new Blog { BlogID = 1, Description = "1", Status = true, PublishDate = now },
new Blog { BlogID = 2, Description = "2", Status = true, PublishDate = now }
};
mockDbContext.Setup(c => c.Blogs).Returns(blogs); // ERROR OCCURS HERE
// Act
List<Blog> result = blogRepository.GetAllBlogs(1, 2, SortDirection.DESC, null, null).ToList();
// Assert
Assert.AreEqual(2, result.Count());
}
}
【问题讨论】:
标签: c# unit-testing moq