Questions tagged «mocking»

模拟和伪造是隔离代码或组件的方法,以确保单元测试仅针对可测试的代码单元运行,而无需实际利用其他组件或应用程序的依赖项。模拟与伪造的不同之处在于,可以检查模拟以断言测试结果。


16
单元测试中的随机数据?
我有一个同事,他为用随机数据填充其字段的对象编写单元测试。他的原因是它提供了更广泛的测试范围,因为它将测试许多不同的值,而普通测试仅使用单个静态值。 我为此提出了许多不同的理由,主要的理由是: 随机值表示测试并非真正可重复(这也意味着如果测试可以随机失败,则可以在构建服务器上这样做并破坏构建) 如果它是一个随机值并且测试失败,则我们需要a)修复对象,b)每次都强迫我们测试该值,所以我们知道它是有效的,但是由于它是随机的,所以我们不知道该值是什么 另一位同事补充说: 如果我正在测试异常,则随机值将无法确保测试以预期状态结束 随机数据用于冲洗系统和负载测试,而不用于单元测试 还有谁能补充我可以给他的其他理由,让他停止这样做? (或者,这是编写单元测试的一种可接受的方法,而我和我的其他同事错了吗?)

8
使用Mockito模拟类的成员变量
我是开发的新手,尤其是单元测试的新手。我想我的要求很简单,但是我很想知道其他人对此的想法。 假设我有两个这样的类- public class First { Second second ; public First(){ second = new Second(); } public String doSecond(){ return second.doSecond(); } } class Second { public String doSecond(){ return "Do Something"; } } 假设我正在编写单元测试到测试First.doSecond()方法。但是,假设我想像这样模拟Second.doSecond()课程。我正在使用Mockito执行此操作。 public void testFirst(){ Second sec = mock(Second.class); when(sec.doSecond()).thenReturn("Stubbed Second"); First first = new First(); assertEquals("Stubbed …
136 java  mocking  mockito 

3
没有指定输入参数的Moq模拟方法
我在使用Moq的测试中有一些代码: public class Invoice { ... public bool IsInFinancialYear(FinancialYearLookup financialYearLookup) { return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate; } ... } 所以在单元测试中,我试图模拟该方法并使它返回true mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true); 无论如何要写这行,所以我不必指定输入IsInFinancialYear。即。因此,无论代码中输入了什么参数,它都不会返回true,无论传递给它的是什么?
133 c#  mocking  moq 

6
断言未使用Mock调用函数/方法
我正在使用Mock库来测试我的应用程序,但是我想断言某些函数没有被调用。模拟文档谈论类似的方法mock.assert_called_with和mock.assert_called_once_with,但我没有找到像什么mock.assert_not_called或验证模拟相关的东西是不叫。 我可以使用类似以下的内容,尽管它看起来既不酷也不是pythonic: def test_something: # some actions with patch('something') as my_var: try: # args are not important. func should never be called in this test my_var.assert_called_with(some, args) except AssertionError: pass # this error being raised means it's ok # other stuff 任何想法如何做到这一点?

7
在模拟框架中进行模拟与间谍活动
在模拟框架中,您可以模拟对象或对其进行监视。两者之间有什么区别?何时/应该何时使用另一种? 综观的Mockito,例如,我看到使用被做过类似的事情间谍和嘲笑,但我不能确定两者之间的区别。

7
如何在RequireJS中模拟依赖关系以进行单元测试?
我有一个要测试的AMD模块,但是我想模拟其依赖关系,而不是加载实际的依赖关系。我正在使用requirejs,模块的代码如下所示: define(['hurp', 'durp'], function(Hurp, Durp) { return { foo: function () { console.log(Hurp.beans) }, bar: function () { console.log(Durp.beans) } } } 我该如何模拟hurp并durp有效地进行单元测试?

5
Mockito与JMockit之间的比较-为什么Mockito的投票比JMockit好?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在研究为项目使用哪种模拟框架,并将其范围缩小到JMockit和Mockito。 我注意到Mockito在Stackoverflow上被评为“ Java最佳模拟框架 ”。 在比较JMockit的“ 模拟工具比较矩阵 ”上的功能时,看来JMockit具有多个不同的功能。 是否有人对Mockito可以做什么(JMockit无法实现)有任何特定信息(无意见),反之亦然?

2
Mockito匹配器如何工作?
争论的Mockito匹配器(如any,argThat,eq,same,和ArgumentCaptor.capture())从Hamcrest匹配器表现非常不同。 Mockito匹配器经常会导致InvalidUseOfMatchersException,即使在使用任何匹配器很长时间后执行的代码中也是如此。 Mockito匹配器遵循奇怪的规则,例如,如果给定方法中的一个参数使用匹配器,则仅要求对所有参数使用Mockito匹配器。 当覆盖Answers或使用(Integer) any()etc 时,Mockito匹配器可能导致NullPointerException 。 使用Mockito匹配器以某些方式重构代码会产生异常和意外行为,并且可能会完全失败。 为什么Mockito匹配器是这样设计的,如何实现?
122 java  mocking  mockito 

1
模拟函数引发异常以测试except块
我有一个foo调用另一个函数(bar)的函数()。如果调用bar()引发一个HttpError,如果状态代码为404,我想特别处理它,否则重新引发。 我正在尝试围绕此foo函数编写一些单元测试,以模拟对的调用bar()。不幸的是,我无法得到模拟调用bar()以引发被我的代码except块捕获的异常。 这是说明我问题的代码: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # fails, test raises HttpError @mock.patch('my_tests.bar') def test_foo_shouldRaiseHttpError_whenBarRaiseHttpErrorNot404(self, barMock): barMock.side_effect …

5
phpunit模拟方法使用不同参数多次调用
有什么方法可以为不同的输入参数定义不同的模拟期望吗?例如,我有一个称为DB的数据库层类。此类具有称为“ Query(string $ query)”的方法,该方法在输入时采用SQL查询字符串。是否可以为此类(DB)创建模拟并为取决于输入查询字符串的不同Query方法调用设置不同的返回值?
117 php  mocking  phpunit 

2
模拟类:Mock()或patch()?
我在Python中使用模拟,并想知道这两种方法中哪一种更好(请参阅:更多pythonic)。 方法一:只需创建一个模拟对象并使用它即可。代码如下: def test_one (self): mock = Mock() mock.method.return_value = True self.sut.something(mock) # This should called mock.method and checks the result. self.assertTrue(mock.method.called) 方法二:使用补丁创建一个模拟。代码如下: @patch("MyClass") def test_two (self, mock): instance = mock.return_value instance.method.return_value = True self.sut.something(instance) # This should called mock.method and checks the result. self.assertTrue(instance.method.called) 两种方法都做同样的事情。我不确定这些差异。 谁能启发我?


7
将模拟注入AngularJS服务
我写了一个AngularJS服务,我想对其进行单元测试。 angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); 我的app.js文件已注册: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) 我可以测试DI是否像这样工作: describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, myService) { service=myService; })); it("can be …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.