单元测试 IQueryable

发布于 2024-11-19 06:26:52 字数 365 浏览 2 评论 0原文

我正在尝试为采用 IQueryable 集合的方法编写单元测试。

在将集合传递给测试方法之前,我应该如何在单元测试中实例化该集合?这是我测试中的默认代码

IQueryable<Item> Items = null; // TODO: Initialize to an appropriate value

这是我尝试编写的

IQueryable<Item> Items = new IQueryable<Item>; // TODO: Initialize to an appropriate value

我犯了一个小学生错误吗?

I am trying to write a unit test for a method which takes an IQueryable collection.

How should I instantiate the collection in my unit test before I pass it to the method for test? This is the default code in my test

IQueryable<Item> Items = null; // TODO: Initialize to an appropriate value

And here is what I tried writing

IQueryable<Item> Items = new IQueryable<Item>; // TODO: Initialize to an appropriate value

Am I making a school boy error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玩套路吗 2024-11-26 06:26:52

好吧,您可以在任何类型化集合/列表/数组上使用 .AsQueryable() ,但是在我看来,您无法对此进行单元测试,因为不同的查询提供商支持不同的选项/方法。您只能对此进行集成测试。任何单元测试(尤其是使用对象的单元测试)都很少或根本无法证明您的系统。

Well, you can use .AsQueryable() on any typed collection/list/array, however IMO you cannot unit test this, as different query providers support different options/methods. You can only integration-test this. Any unit test (especially one using objects) does little or nothing to prove your system.

初见 2024-11-26 06:26:52

IQueryable 似乎是一个接口( http://msdn.microsoft. com/en-us/library/system.linq.iqueryable.aspx ),您不应该尝试实例化一个实现此接口的类(或者可能使用模拟对象进行测试)吗?

IQueryable seems to be an interface ( http://msdn.microsoft.com/en-us/library/system.linq.iqueryable.aspx ), shouldn't you try to instanciate a class that implements this interface instead (or maybe use a mock object for your test) ?

紅太極 2024-11-26 06:26:52

最好的方法是使用一种模式,让您测试来自数据库的 IQueryable 响应,例如 工作单元和存储库模式

创建用于单元测试的模拟存储库的最佳方法是使用内存存储库,但是您还可以使用 Moq 或任何其他假存储库。

Best way is to use a pattern that let's you test IQueryable responses from a database such as the Unit of work and repository pattern

The best way to create a mock repository to use in unit testing is with a memory repository, but you can also use Moq or any other fake repository library.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文