问题标签 [partial-mocks]

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 回答
12396 浏览

java - 如何使用 PowerMock 部分模拟公共方法?

以下是我的课

所以在上面的类中测试testThisMethod()时,我想部分模拟helperMethodPublic()。

截至目前,我正在执行以下操作:

编译器不会抱怨。所以我尝试运行我的测试,当代码到达 helperMethodPublic() 方法时,控件进入该方法并开始执行其中的每一行代码。我该如何防止这种情况发生?

0 投票
1 回答
525 浏览

unit-testing - 部分模拟 - 期望被忽略 (Rhino Mocks)

我正在尝试测试类似于以下示例的类:

部分嘲讽似乎无法接受我的期望。当我运行测试时,我收到有关输入的错误。当我调试时,我看到正在执行该方法的实际实现而不是预期。

我做这个测试正确吗?根据文档(http://ayende.com/wiki/Rhino%20Mocks%20Partial%20Mocks.ashx):“除非您为该方法定义期望,否则部分模拟将调用该类上定义的方法。如果您有定义了一个期望,它将为此使用正常规则。”

0 投票
1 回答
243 浏览

java - 在这种情况下,部分模拟有什么问题?

假设我有两种方法,其中一种基本上是另一种方法的包装器,只需要一点额外的处理:

为部分模拟 ItemRepositoryImpl 的 delete(UUID) 方法编写单元测试并检查 delete(UUID) 最终调用 delete(Item) 有什么问题?如果我这样做了,我就不必为每个删除方法编写一堆重复的测试了!

在 Mockito 中,我可以用这样的间谍实现这样的测试:

然而,Mockito 文档强烈反对使用这种类型的部分模拟,基本上声明它应该只用于临时遗留代码和第 3 方 API。有什么更好的解决方案?

0 投票
2 回答
2006 浏览

mockito - 部分模拟被认为是不好的做法?(模仿)

我正在使用 Mockito 对业务对象进行单元测试。业务对象使用通常从数据库获取数据的 DAO。为了测试业务对象,我意识到使用单独的内存 DAO(将数据保存在 HashMap 中)比编写所有

陈述。为了创建这样的 DAO,我首先部分模拟了我的 DAO 接口,如下所示:

但我突然想到,自己实现一个全新的 DAO 实现(使用内存中的 HashMap)甚至不使用 Mockito(无需从 InvocationOnMock 对象中获取参数)并让测试的业务对象使用这个新的更容易道。

此外,我读过部分模拟被认为是不好的做法。我的问题是:就我的情况而言,我正在做的事情是不好的做法吗?有什么缺点?对我来说这似乎没问题,我想知道潜在的问题可能是什么。

0 投票
1 回答
213 浏览

c# - 如何断言调用方法而不执行方法中的代码?

想象一下,我们有以下代码

我想断言,如果在 x==y 时调用了methodone,但不希望我的测试在我的方法一中执行代码,因为它会做一些数据库的东西......

我正在写这样的东西

但它也尝试运行方法一中的东西,我不希望我的测试进行数据库连接,我只需要确保我的条件正常工作并且它是否调用。

0 投票
1 回答
912 浏览

python - 如何只模拟您正在测试的对象中调用的一种方法

我想测试一个方法,但要模拟它调用的其他方法。我创建了这个简单的例子来说明这个概念:

我使用了一个名为 Mox 的 python 模拟框架并编写了以下代码来执行此操作:

评论:

我想如果我在一个没有被覆盖的方法上调用这个模拟,那么模拟将默认为原始代码,然后我可以获得我想要的调用链,最后一个调用被替换......但是它不这样做。我不知道如何在没有插入方法的测试对象中嵌入模拟对象。

我研究了 Partial Mocks 和 Chained Mocks 来解决这个问题,但我找不到解决这个问题的方法。

谢谢你的帮助 :)

——彼得

0 投票
1 回答
1258 浏览

unit-testing - Rhino Mock 部分模拟中的存根设置器

我正在关注这个问题中公认的答案,但我得到了一个NullReferenceException.

我需要的是有一个部分模拟存根一个属性(getter 和 setter)来表现得像一个存根(作为一个简单的自动属性)。目前我可以存根 getter 但不能存根 setter。

这可能吗?

编辑:这是一个简单的例子,我希望它有助于解释我的问题。

0 投票
1 回答
3746 浏览

c# - 使用 Moq 部分模拟类内部方法

我有一个包含公共方法的类,该方法依赖于内部方法才能正确返回其值。

让我们考虑以下类和测试文件:

以下测试用例将起作用:

但是假设我的这个MockedMethod()在外部没有效用。问题是将此方法标记为internal(即使InternalsVisibleTo()正确使用):

将使完全相同的测试失败并显示消息Assert.AreEqual failed. Expected:<mocked>. Actual:<original>

这是最小起订量错误还是某些限制?

0 投票
1 回答
498 浏览

objective-c - 如何使用 OCMockito 验证只读属性的行为?

我正在使用带有 ReactiveCocoa 的 MVVM 和 OCMockito 进行测试。假设我有一个 ViewController A 和 ViewController B。A 需要对 B 执行 segue。我想验证当这种情况发生时,A 首先通过分配将必要的数据(“模型”)传递给 B。

B看起来像这样:

在视图控制器的某处A,有一条语句:

我想验证此分配是否正在发生,但viewModel属性是只读的。viewModel 由 viewController 的 init 方法初始化。

我怎么能在这里模拟出 viewModel 呢?

我可以部分模拟 viewControllerB 以返回一个 mock viewModel,然后我对其进行验证,但https://github.com/jonreid/OCMockito/issues/38说部分模拟已被删除。为什么?!

0 投票
0 回答
645 浏览

spring - 尝试使用 PowerMock 模拟私有方法时出现“没有最后一次调用可用的模拟”错误

我正在尝试模拟一个类的私有方法。

我想为下面的类模拟 isBalancedTree 方法。

下面是测试代码。

我正在为 Spring 的 DummyClassForPowerMockTest 创建 bean

用下面的豆子。

有了这个,我收到以下错误。

我不确定为什么会出现这个错误。我在网上搜索了很多这个错误,但没有任何帮助。当我不使用 bean 初始化类时,我能够成功运行测试。但是当我尝试注入一个 bean 时,它会因上述错误而失败。有人可以帮我解决这个问题。

提前致谢。