Pra*_*ran 5 asp.net testing entity-framework moq
我正在使用实体框架数据库优先方法和生成的edmx
文件。
我正在尝试enter code here
使用MOQ
框架实现单元测试。
这是我的代码
[TestMethod]
public void DeleteApplication()
{
var mockContext = new Mock<ARMSContext>();
var data = GetMemoryApplications();
var mockSet = new Mock<DbSet<Application>>();
mockSet.As<IQueryable<Application>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<Application>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<Application>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<Application>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var test=appcontroller.Delete(1, 1);
}
Run Code Online (Sandbox Code Playgroud)
我Parent does not have..
在调用时遇到异常mockSet.Object
。
你能解决这个异常吗?
从你给出的内容来看,我看不出你是如何使用Mock<DbSet<Application>>
, 或Mock<ARMSContext>
.
以下是 MSDN“使用模拟框架进行测试(EF6 及以上版本) ”给出的示例,它将连接DbSet
到Context
:
[TestMethod]
public void GetAllBlogs_orders_by_name()
{
var data = new List<Blog>
{
new Blog { Name = "BBB" },
new Blog { Name = "ZZZ" },
new Blog { Name = "AAA" },
}.AsQueryable();
var mockSet = new Mock<DbSet<Blog>>();
mockSet.As<IQueryable<Blog>>().Setup(m => m.Provider).Returns(data.Provider);
mockSet.As<IQueryable<Blog>>().Setup(m => m.Expression).Returns(data.Expression);
mockSet.As<IQueryable<Blog>>().Setup(m => m.ElementType).Returns(data.ElementType);
mockSet.As<IQueryable<Blog>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());
var mockContext = new Mock<BloggingContext>();
mockContext.Setup(c => c.Blogs).Returns(mockSet.Object);
var service = new BlogService(mockContext.Object);
var blogs = service.GetAllBlogs();
Assert.AreEqual(3, blogs.Count);
Assert.AreEqual("AAA", blogs[0].Name);
Assert.AreEqual("BBB", blogs[1].Name);
Assert.AreEqual("ZZZ", blogs[2].Name);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3007 次 |
最近记录: |