如何用moq测试泛型方法 [英] How to test generic method with moq

查看:149
本文介绍了如何用moq测试泛型方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用moq测试一种方法:

I have a method that I want to test with moq:

public List<T> GetValidRecords<T>(Entities context) where T: class, IGetListOfTables
{
    try
    {
        return context.Set<T>().Where(x => x.Valid == 1).ToList();
    }
    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }
}





我创建了单元测试:



I've created unit test:

[TestMethod]
public void GetValidRecords()
{
    var data = new List<tableName>
    {
        new tableName() {Valid= 1},
        new tableName() {Valid= 1}
    }.AsQueryable();

    var mockSet = new Mock<DbSet<tableName>>();
    mockSet.As<IQueryable<tableName>>().Setup(m => m.Provider).Returns(data.Provider);
    mockSet.As<IQueryable<tableName>>().Setup(m => m.Expression).Returns(data.Expression);
    mockSet.As<IQueryable<tableName>>().Setup(m => m.ElementType).Returns(data.ElementType);
    mockSet.As<IQueryable<tableName>>().Setup(m => m.GetEnumerator()).Returns(data.GetEnumerator());

    var mockContext = new Mock<ALMONEntitiesNew>();
    mockContext.Setup(x => x.tableName).Returns(mockSet.Object);
    var database = new Database();
    var numberOfRecords = database.GetValidRecords<tableName>(mockContext.Object);
    Assert.AreEqual(2, numberOfRecords.Count, "Wrong number of valid records.");
}





问题是我从表中获得了实际的记录数,而不是moqed数。我该如何解决?



The problem is that I get actual number of records from table, and not moqed number. How can I fix it?

推荐答案

这篇关于如何用moq测试泛型方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆