duf*_*ffy 3 c# model-view-controller unit-testing
我有一个包含一堆访问函数的数据库存储库.我现在想要构建一个虚假的存储库,它为单元测试提供类似的功能.与真实存储库不同,这个使用简单列表而不是linqtosql生成的模型类.
大多数假存储库函数看起来与真实存储库函数完全相同,最后只需要额外的ToQueryable().但是,我现在有一个似乎需要更复杂的演员.
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
});
}
}
Run Code Online (Sandbox Code Playgroud)
目前,这给出了错误"无法隐式转换类型'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>;
}
}
Run Code Online (Sandbox Code Playgroud)
IEnumerable上有一个.AsQueryable()扩展方法就是为了这个,所以将它添加到你返回的查询中.
return (from ..).AsQueryable();
Run Code Online (Sandbox Code Playgroud)