c# - 如何 stub DbSet.Find

标签 c# entity-framework unit-testing

// acknowledgement: http://stackoverflow.com/a/5022512/1500199
public class FakeDbSet<T> : IDbSet<T> where T : class
{
    private readonly HashSet<T> data;
    private readonly IQueryable query;

    public FakeDbSet()
    {
        data = new HashSet<T>();
        query = data.AsQueryable();
    }

    public virtual T Find(params object[] keyValues)
    {
        throw new NotImplementedException();
    }
}

如何实现Find

我需要确定 T 的主键值,以便在 Find 方法中执行键值比较,但我不知道如何做。

最佳答案

试试这个:

public class FakeDbSet<T> : IDbSet<T> where T : class
{
    private Func<T, object[], bool> _findSelector
    private readonly HashSet<T> data;
    private readonly IQueryable query;

    public FakeDbSet(Func<T, object[], bool> findSelector)
    {
        _findSelector = findSelector;
        data = new HashSet<T>();
        query = data.AsQueryable();
    }

    public virtual T Find(params object[] keyValues)
    {
        return _data.SingleOrDefault(item => _findSelector(item, keyValues));
    }
}

关于c# - 如何 stub DbSet.Find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973248/

相关文章:

c# - 无法翻译 LINQ 表达式错误

php - 如何测试处理 Eloquent 模型的 Laravel 包?

asp.net-mvc-4 - 如何为 IValidatableObject 模型编写单元测试

python - 如何向 Nose 提供敏感数据

c# - 如何从 SelectionModel 外部的 Ext.Net.GridPanel 中的当前选定行获取值?

c# - 在 WPF 中使用 CollectionView 时无法从数据集中的连接表中获取数据

entity-framework - 如何从局部 View 实现元素的验证规则

c# - Unity GameObject 速度和动画问题

c# - 获取指向自身内部结构的指针(不安全上下文)

.net - EF - 添加到由 Id 设置的关联