【发布时间】:2011-08-16 10:25:00
【问题描述】:
我有以下 UserRepository:
public class UserRepository : Repository<Entities.User> {
public Entities.IUser Find(string domain, string username, string password) {
return (from u in FindAll()
where u.Account.SubDomain == domain && u.EmailAddress == username && u.PasswordHash == password
&& !u.IsArchived
select u).FirstOrDefault();
}
}
“FindAll”方法是 Repository 的一部分,基本上只是调用 context.GetTable().AsQueryable()
我希望能够编写一个调用此存储库方法的测试,但不是访问数据库,而是使用一些内存存储。
我已经做了很多搜索,我似乎遇到的所有内容都在谈论模拟存储库并返回一个列表(通常在单元测试开始时创建),但我不明白它有什么用.我想确保我编写的 linq 查询实际上是正确过滤对象并仅检索所需的记录。 由于 DataContext 没有接口,我不能简单地对其进行模拟。
我认为处理此问题的唯一其他方法是实际与数据库对话,但我知道这不是单元测试的重点。
我的问题是其他人是如何处理这个问题的?
【问题讨论】:
标签: unit-testing linq-to-sql tdd