我如何存根 IQueryable<int> 和 IQueryable<String>

How do I stub IQueryable<int> and IQueryable<String>

如何存根这些方法:

产品DAL:

    public IQueryable<string> getCatNameList()
    {
        var db = new Database();
        var categoryNames = db.ProductCategories.Select(c => c.Name);
        return categoryNames;
    }

    public IQueryable<int> getCatIdList()
    {
        var db = new Database();
        var categoryID = db.ProductCategories.Select(c => c.Categoryid);
        return categoryID;
    }

IProductDAL:

    IQueryable<int> getCatIdList();
    IQueryable<string> getCatNameList();

一直在 Whosebug 上搜索,但没有 questions/answers 让我更接近于理解我是如何去做的。

创建和 IEnumerable 您需要 return 的任何内容(可以是 List 或数组)。然后使用 AsQueryable 扩展方法将其转换为 IQueryable 并将其传递给您使用的任何 mocking/stubbing 库。

在这种情况下,我建议您将界面更改为一系列 IEnumerable 而不是 IQueryable。将这些方法作为可查询的方法没有什么意义,因为它们已经被预测了。

如果您只是想对它们进行存根,请使用 Enumerable.Empty<type>().AsQueryable().