问题标签 [moq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
40097 浏览

asp.net-mvc - 你如何使用 Moq 模拟会话对象集合

我正在使用shanselmann 的 MvcMockHelper类使用 Moq 模拟一些 HttpContext 东西,但我遇到的问题是能够在我的 MVC 控制器中为我的模拟会话对象分配一些东西,然后能够在我的单元测试中读取相同的值以进行验证目的。

我的问题是如何将存储集合分配给模拟会话对象以允许诸如 session["UserName"] = "foo" 之类的代码保留“foo”值并使其在单元测试中可用。

0 投票
1 回答
3080 浏览

unit-testing - 如何为 Moq 和 Linq-to-Sql 编写 CRUD 单元测试

我只是参与起订量和单元测试,所以如果这看起来很明显,请原谅我(通过 SO 快速搜索并没有向我显示类似的东西)。

我与以下提议的成员有一个接口:

我想为此功能编写一个单元测试。测试类有一个 Moq Repository,声明如下:

应该如何修改模拟存储库声明以包含这种新的所需行为,或者我应该创建一个不同的起订量(以及如何完成)。

我的假设是,在创建模拟之后,派生单元测试会容易得多,但非常感谢提示。

非常感谢,

凯夫狗

0 投票
8 回答
92351 浏览

c# - 如何验证在 Moq 中没有调用该方法?

如何验证未在Moq中调用该方法?

它有类似 AssertWasNotCalled 的东西吗?

更新:从 3.0 版开始,可以使用新语法:

0 投票
1 回答
879 浏览

moq - 使用 Moq 回调方法时出现 ParameterMismatch 异常

我有一个名为 IAuthorizationRepository 的接口,其接口如下:

其中用户定义如下:

我有一个这样的 TestInitialize 方法:

但是当我运行测试时,我在调用 _repository.Object.AddObject("Users", user) 的行上得到一个 System.Reflection.TargetParameterCountException。我是 Moq 的新手,但据我所知,这应该可行。我究竟做错了什么。我想在调用 AddObject("Users" , Object) 时将用户对象添加到我的列表中。所以 _repository.Object.Users.Count() 应该反映正确的用户数量。

0 投票
3 回答
1327 浏览

c# - 使用 Rhino Mocks 默认返回空列表

我认为当方法没有结果时总是返回空列表或数组而不是 null 是一种很好的做法,以避免代码中的 null 检查。

因为 Rhino Mocks 返回一个对象的默认值,对于列表和数组为 null,很多时候我必须重新添加 null 检查或设置模拟以返回列表。

有没有办法用这种行为配置或扩展 Rhino Mocks?

0 投票
1 回答
9041 浏览

c# - 我可以让 Moq 为模拟类添加属性吗?

我正在为我的项目编写一个命令行界面。用户输入“create project foo”,找到负责“project”的控制器,然后调用该Create方法,将“foo”作为第一个参数传递。

它严重依赖于属性和反射:控制器看起来像这样:

我想在解析器的单元测试中使用 Moq,如下所示:

将属性添加到接口似乎不起作用——它们不是由派生类继承的。

我可以让 Moq 为被模拟的类添加属性吗?

0 投票
1 回答
7476 浏览

c# - 使用 Moq 模拟 HttpContext Response.Output

我一直在使用Hanselman 博客中的 MvcMockHelpers 类来传递一个模拟的 HttpContext。我们对其进行了一些扩展,以添加一些我们需要的身份验证数据,并且在大多数情况下,这非常棒。

我们遇到的问题是我们提供给控制器的上下文在 HttpContext.Response.Output 中有一个空值,这会导致一些异常被抛出。我不确定要添加什么才能使其正常工作。

这是现有的 FakeHttpConext() 方法:

这是爆炸方法(它是 MVC Contrib 项目的 XmlResult 的一部分):

当引用 context.HttpContext.Response.Output 时,我需要在 FakeHttpContext 方法中添加什么来防止出现 null 异常?

澄清:我正在寻找的解决方案需要在 Moq 中完成,而不是 Rhino。我在问题标题中提到了起订量,但在问题正文中忽略了这一点。很抱歉有任何混淆。

解决 方法 我在 FakeHttpContext() 方法中添加了以下两行代码:

这可以防止空异常。不确定它是否是一个长期的好答案,但它现在有效。

0 投票
6 回答
78886 浏览

c# - 如何使用 Moq 模拟扩展方法?

我正在编写一个依赖于扩展方法结果的测试,但我不希望该扩展方法未来的失败会破坏这个测试。模拟该结果似乎是显而易见的选择,但Moq 似乎没有提供覆盖静态方法的方法(扩展方法的要求)。Moq.Protected 和 Moq.Stub 也有类似的想法,但它们似乎没有为这种情况提供任何东西。我错过了什么还是应该以不同的方式解决这个问题?

这是一个简单的示例,该示例因通常的“对不可覆盖成员的无效期望”而失败。这是一个需要模拟扩展方法的坏例子,但它应该这样做。

至于任何可能建议我使用 Isolator 的 TypeMock 爱好者:我很欣赏你的努力,因为看起来 TypeMock 可以蒙着眼睛和醉酒地完成这项工作,但我们的预算不会很快增加。

0 投票
1 回答
11075 浏览

c# - 在 Returns() 中组装值时访问 Expect() 的原始参数

在组装 Returns 对象时,是否可以访问用于调用模拟期望的参数?

这是所涉及对象的存根,鉴于此,我正在尝试模拟一个集合:

给定一个将用于模拟对象的 CollectionValues 测试列表,如何设置一个期望来处理该 CollectionValues 列表中所有可能的 ID 排列,包括组合现有 ID 和不存在 ID 的调用? 我的问题来自于希望在一次通话中设置所有可能的期望;如果无法访问原始参数,我可以很容易地设置我想要在每次给定调用中测试的确切期望。

这就是我希望做的,在哪里“???” 表示可以方便地访问用于调用 GetById 的参数(限定 It.IsAny 限制的参数):

0 投票
2 回答
7141 浏览

moq - 使用 Moq 模拟数据集

我正在尝试开始使用最小起订量,但无法找到任何好的资源来做我需要的事情。

我有一个数据接口类,它有一个通过存储过程返回数据集的 Get 方法。这就是代码的编写方式,我目前无法更改它,因此必须以这种方式完成。

我想通过模拟数据集并返回数据来测试这个类,这样我就不必实际进行数据库调用。

有没有人这样做,如果有的话,从哪里开始做呢?