加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – Moq Parent没有默认构造函数.必须显式定义默认构造函

发布时间:2020-12-16 09:40:28 所属栏目:asp.Net 来源:网络整理
导读:我正在使用实体框架db第一种方法并生成edmx文件. 我试图在这里实现输入代码使用MOQ框架进行单元测试. 这是我的代码 [TestMethod] public void DeleteApplication() { var mockContext = new MockARMSContext(); var data = GetMemoryApplications(); var moc
我正在使用实体框架db第一种方法并生成edmx文件.

我试图在这里实现输入代码使用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);

    }

我在调用mockSet.Object时得到Parent没有..异常.

你能解决这个例外吗?

解决方法

根据您提供的内容,我无法看到您如何使用Mock< DbSet< Application>>,以及Mock< ARMSContext>.

以下是从MSDN“Testing with a mocking framework (EF6 onwards)”给出的示例,它将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);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读