问题标签 [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 投票
3 回答
29048 浏览

c# - 如何使用 moq 模拟 Controller.User

我有几个 ActionMethods 像这样查询 Controller.User 的角色

在这种情况下方便地采取行动。

我开始用这样的代码对这些方法进行测试

并且该测试失败,因为 Controller.User 未设置。任何的想法?

0 投票
1 回答
1812 浏览

unit-testing - Moq - 如何对方法中引用的更改进行单元测试

改天,另一个问题。我的服务层有以下方法

该方法调用 this 辅助方法来创建一个新的匹配对象:

存储库存储给定的匹配对象并将 id 设置为某个值 > 0。

matchviewdata 对象复制了 match 对象的一些属性(包括 id)。

我的单元测试应该验证服务中生成的 viewdata 对象的 id > 0。要对此进行归档,我必须模拟存储库和 add 方法的行为。但是每次调用 service 方法时都会创建一个新的匹配对象,并且存储库上的 add 方法会更新引用的匹配对象(不需要返回值)。我不知道用最小起订量来解决这个问题。

到目前为止,这是我的单元测试:

我尝试了其他一些变化 - 没有任何效果。

0 投票
2 回答
2466 浏览

c# - 在 C# 中使用 Moq 对克隆方法进行单元测试

我有一些带有克隆方法的基本类:

我想要一个单元测试,它会告诉我是否添加了 ValueD,但忘记将其添加到 Clone 方法中。我的第一次尝试是使用 Moq 及其 VerifyGet 方法来确保访问每个属性。

这不起作用,因为 VerifyGet 方法需要知道 Property 访问器的返回类型,而且我想不出任何在运行时插入它的方法(你会注意到我尝试使用崩溃的“对象”的蹩脚尝试)烧毁)。

我什至不确定使用起订量是个好主意,这只是我的第一个。

更新:由于没有快速简便的通用方法来测试克隆方法,我决定为每个类编写特定于类型的测试。这仍然给我留下了知道何时添加属性的问题。我决定将其附加到我的克隆单元测试中:

如果我添加一个属性,测试将失败。当签名匹配失败时,它仍然取决于我是否有足够的责任来修复测试的其余部分。

0 投票
1 回答
507 浏览

tdd - 模拟非虚拟事件(在 COM 互操作类中)

编辑:语言/平台是 C# / .Net

我目前正试图填补我当前项目中的一个巨大的单元测试空白,并且诚然是 TDD 的新手,我发现自己对于如何去测试一些更关键的业务特性感到很困惑。

我选择了 Moq 并有足够的时间做简单的模拟,但是在我的应用程序的核心是一个相当大的、可怕的 COM 互操作层,我很难概念化如何适当地进行单元测试。COM 组件完全是第 3 方,因此无法修改,它实现了相当于处理电话呼叫的有限状态机。该组件通过一组非虚拟事件通知我的应用程序,我想以某些顺序对其进行测试以模拟状态更改,但是 Moq 不提供除虚拟事件之外的任何方法来执行此操作。

所以我对知识渊博的 TDDers/Mockists 的问题是:你将如何测试这种东西?

显然 TypeMock 支持这一点(以换取它自己的缺点),但我宁愿不使用它,原因是关于类型安全的各种原因以及我普遍认为它在我背后做一些狡猾的事情。

0 投票
2 回答
2824 浏览

vb.net - 在 VB.Net 中使用 moq 的经验

我真的很喜欢 moq 模拟框架。我已经在几个项目中使用过它。不幸的是,我的一位客户要求我们使用 VB.Net。不是我的偏好,但是嘿,.Net 是 .Net,对吗?

我听说起订量与 VB 有一些问题。这是真的?是这样,什么样的麻烦?鉴于 .Net 与语言无关的性质,我希望它能够正常工作。

我应该考虑使用其他一些与 VB 一起使用的模拟框架吗?

0 投票
1 回答
519 浏览

moq - 我如何最小化这个 DotNetOpenAuth 响应对象?

我有一个接受DotNetOpenAuth(正式称为 DotNetOpenId)Response对象的方法。我的方法提取任何声明的数据,检查该用户是否存在于我们的系统中,yadda yadda yadda... 完成后返回经过身份验证的用户实例。

现在..我如何使用moq来模拟这个响应对象,以测试我的身份验证方法(AuthenticateUser())?

模拟框架:moq
语言:.NET C# 3.5 sp1
响应对象:取自 DotNetOpenAuth 框架

0 投票
2 回答
1069 浏览

debugging - 为什么获取使用 Moq 创建的模拟实例会引发 System.BadImageFormatException?

这个问题可能与另一个问题有关,它肯定会导致 System.BadImageFormatException。也许它是同一件事,但暴露方式不同?

我有以下代码:

然后我有一个使用 Moq 模拟 IFooRepo 的测试,如下所示:

上面的代码运行良好,除非在使用 Visual Studio 2008 调试测试时。当我越过上面的行时,System.BadImageFormatException 会通过 Castle.DynamicProxy 从 System.Reflection.Emit 抛出。这可能类似于Ayende Rahien 发布的内容吗?

现在的解决方法是为 IFooRepo 实现一个假的,但我很好奇为什么会为这种场景生成一个糟糕的图像并且有解决办法吗?System.Reflection.Emit 有问题吗?还是我在自己的代码中遗漏了一些明显的东西?

编辑:为 GetFoo() 发布了不正确的签名。将签名更正为 GetFoo<T, F>(),从而正确重现了问题。安装 GDR 后,此问题仍然存在。

编辑:似乎如果对 F 的约束包括类型参数 T BadImageFormatException 就会引发。但是我将其更改为,例如where F : class, new(),然后一切都按预期工作。

0 投票
1 回答
6025 浏览

c# - 带 Action 参数的起订量

我正在尝试使用 Moq 3.x,它运行良好。但是,我有一个问题,我不知道如何解决。给定

我正在尝试以下操作:

我的问题是对 passTestSpec.Object.Run(... some action ...) 的任何调用都返回 false。似乎 Moq 库正在尝试将操作与我在 Setup() 调用中传递给 Run() 的参数相匹配,但失败了。实际上,我在 Run() 调用中执行的操作并不重要……它仍然返回 false。

有任何想法吗?

[编辑] 我刚刚发现了一些东西;如果我将设置行替换为

测试通过。但是,我不知道 .Run() 方法将被调用什么操作,所以这不是一个解决方案。任何人都知道 It.IsAny 等价的动作吗?

0 投票
2 回答
2508 浏览

asp.net-mvc - 我如何起订量一个 ISingleResult?我是不是该?还是有更好的方法?

我的控制器中有这样的操作方法

我想开始对其进行测试(是的,在它建成之后,而不是之前......但是代码是在我开始使用 TDD 之前编写的,所以......)

我发现将诸如此类的属性添加到控制器

我可以在构造函数中添加这样的东西......

然后我可以使用 NorthwindDatacontext 的模拟来测试设置 ContextBuilder 属性的 ActionMethod

但是......我发现没有办法使用它,因为 NorthwindDatacontext 的所有方法都使用 ISingleResult 作为 returnType 并且我找不到使用该接口创建对象的方法。我试过这个

但它不起作用,因为转换为 ISingleResult 时 theResult 为空。

有没有办法创建一个 ISingleResult 对象来测试这种方式,或者我在这里做的事情不正确?

提前致谢

0 投票
3 回答
1467 浏览

c# - 使用 Moq 在函数内模拟与数据源的连接?

我开始使用 Moq,但我无法弄清楚如何在下面的代码中测试Execute方法:

我有以下课程:

}

另一种方法负责根据配置文件中的信息创建和初始化 IDataReaderPlugin 和 IDataWriterPlugin。

我想测试 Execute 方法。所以,我需要模拟m_sourcem_dest,然后我想测试发送到m_dest的结果。

我如何通过 Moq 实现这一目标?

谢谢。