我有一个带有一堆访问功能的数据库存储库。我现在想构建一个为单元测试提供类似功能的假存储库。与真正的存储库不同,这个存储库使用简单列表而不是 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>;
          }
    }

10-08 19:35