我有一个带有一堆访问功能的数据库存储库。我现在想构建一个为单元测试提供类似功能的假存储库。与真正的存储库不同,这个存储库使用简单列表而不是 linqtosql 生成的模型类。
大多数伪造的存储库函数看起来和真实的完全一样,只是在末尾多了一个 ToQueryable()。但是,我现在有一个似乎需要更复杂的 Actor 阵容。
public class FakeUserRepository : IUserRepository {
public IQueryable<SelectListItem> GetRecords(int userid) {
// fake_table is a list
return (from a in fake_table select
new SelectListItem {
Value = a.ID.ToString(),
Text = a.Name
});
}
}
目前,这给出了错误“无法隐式转换类型'System.Collections.Generic.IEnumerable。)我对错误消息并不感到惊讶,但我不知道如何修复转换。
最佳答案
你可以这样做:
public class FakeUserRepository : IUserRepository {
public IQueryable<SelectListItem> GetRecords(int userid) {
// fake_table is a list
return (from a in fake_table select
new SelectListItem {
Value = a.ID.ToString(),
Text = a.Name
}).AsQueryable<SelectListItem>;
}
}