Moq设置返回一些硬编码的POCO

时间:2014-06-26 19:31:01

标签: c# unit-testing moq

我试图通过此链接获取moq中的一些对象以传递给我的服务。 http://allen-conway-dotnet.blogspot.com/2014/01/creating-unit-test-using-moq-to-stub.html

我在Returns()函数上遇到错误,说没有满足此功能的重载函数。全部,返回一个IQueryable对象。

Mock<IGroupsRepository> groupRepo;

groupRepo.Setup(m => m.All).Returns(new List<GROUPS>()
                {
                    new GROUPS { ID = 0, GROUP_NAME = "TEST1", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test1" },
                    new GROUPS { ID = 1, GROUP_NAME = "TEST2", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test2" }
                });

2 个答案:

答案 0 :(得分:2)

  

全部,返回一个IQueryable对象。

List<GROUPS>未实现IQueryable<T>,因此All永远不会返回此类列表。

您可以在列表中调用AsQueryable来获取列表的IQueryable<T>表示。

var queryable = new List<GROUPS>()
                {
                    new GROUPS { ID = 0, GROUP_NAME = "TEST1", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test1" },
                    new GROUPS { ID = 1, GROUP_NAME = "TEST2", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test2" }
                }.AsQueryable();


groupRepo.Setup(m => m.All).Returns(queryable);

答案 1 :(得分:1)

new List<GROUPS>()
                {
                    new GROUPS { ID = 0, GROUP_NAME = "TEST1", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test1" },
                    new GROUPS { ID = 1, GROUP_NAME = "TEST2", CREATED_DATE = DateTime.Now, CREATED_BY = "Joe Blow", DESCRIPTION = "Test2" }
                }
        .AsQueryable()

AsQueryable()应使其与IQueryable返回类型

兼容