Questions tagged «mocking»

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

4
模拟回调和获取参数值
我没有运气让Mockito捕获函数参数值!我在模拟搜索引擎索引,而不是建立索引,而是使用哈希。 // Fake index for solr Hashmap<Integer,Document> fakeIndex; // Add a document 666 to the fakeIndex SolrIndexReader reader = Mockito.mock(SolrIndexReader.class); // Give the reader access to the fake index Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666)) 我不能使用任意参数,因为我正在测试查询的结果(即查询返回的文档)。同样,我不想为每个文档指定特定值,也不想为每个文档都指定一行! Mockito.when(reader.document(0)).thenReturn(document(fakeIndex(0)) Mockito.when(reader.document(1)).thenReturn(document(fakeIndex(1)) .... Mockito.when(reader.document(n)).thenReturn(document(fakeIndex(n)) 我查看了“使用Mockito”页面上的回调部分。不幸的是,它不是Java,我无法对此做出自己的解释才能在Java中工作。 编辑(为澄清起见):如何获取Mockito捕获参数X并将其传递给我的函数?我想要传递给函数的X的确切值(或ref)。 我不想列举所有情况,并且任意参数将不起作用,因为我正在测试不同查询的不同结果。 Mockito页面上说 val mockedList = mock[List[String]] mockedList.get(anyInt) answers { i => "The parameter …

6
如何使用Moq模拟扩展方法?
我正在编写一个依赖于扩展方法结果的测试,但是我不希望该扩展方法的将来失败会破坏该测试。模拟该结果似乎是显而易见的选择,但是Moq似乎没有提供重写静态方法(扩展方法的要求)的方法。Moq.Protected和Moq.Stub也有类似的想法,但是在这种情况下他们似乎没有提供任何帮助。我是否缺少某些东西,还是应该以其他方式处理? 这是一个简单的示例,但失败了,并出现了常见的“对不可覆盖成员的无效期望”。这是一个需要模拟扩展方法的糟糕示例,但应该这样做。 public class SomeType { int Id { get; set; } } var ListMock = new Mock<List<SomeType>>(); ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 }); 至于可能建议我使用隔离器的所有TypeMock迷:我很感谢所做的努力,因为看起来TypeMock可以蒙住眼睛和使人兴奋,但我们的预算不会很快增加。

3
如何在每个测试基础上更改模拟实现[Jestjs]
我想改变嘲笑依赖的实施在每个单一的测试基础上通过扩展默认模仿的行为,并恢复回原来的执行下一个测试执行时。 更简单地说,这就是我要实现的目标: 模拟依赖 在单个测试中更改/扩展模拟实现 下一次测试执行时恢复为原始模拟 我目前正在使用Jest v21。 典型的Jest测试如下所示: __mocks__/myModule.js const myMockedModule = jest.genMockFromModule('../myModule'); myMockedModule.a = jest.fn(() => true); myMockedModule.b = jest.fn(() => true); export default myMockedModule; __tests__/myTest.js import myMockedModule from '../myModule'; // Mock myModule jest.mock('../myModule'); beforeEach(() => { jest.clearAllMocks(); }); describe('MyTest', () => { it('should test with default mock', () …

3
如何使用Mockito匹配传递给Class <T>的参数的null
我有这样的方法: public &lt;T&gt; method(String s, Class&lt;T&gt; t) {...} null在将匹配器用于其他参数时,我需要检查传递给第二个参数的方法,我一直在这样做: @SuppressWarnings("unchecked") verify(client).method(eq("String"), any(Class.class)); 但是,有没有更好的方法(没有抑制警告)?T表示某些其他方法的返回类型,有时void在某些情况下null会传入。

12
是否有用于Java的伪造文件系统框架?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 去年关闭。 改善这个问题 我将在一个大量使用IO操作(在这种情况下为文件系统)的项目中引入测试。系统会不断打开/关闭文件,检查文件是否存在,将其删除等等。 很快变得显而易见的是,常规的模拟并没有太大用处,因为这会使我的测试难以设置和推理。另一方面,拥有一个伪造的文件系统会很棒,而且我认为很容易设置。 似乎红宝石家伙又做了一次,正是我在红宝石中要求的:http : //ozmm.org/posts/fakefs.html。 Java有什么远程相似之处吗?

2
使用模拟补丁模拟实例方法
我正在尝试使用富有想象力的Mock测试库测试Django应用程序时模拟某些东西。我似乎无法完全正常工作,我正在尝试这样做: models.py from somelib import FooClass class Promotion(models.Model): foo = models.ForeignKey(FooClass) def bar(self): print "Do something I don't want!" test.py class ViewsDoSomething(TestCase): view = 'my_app.views.do_something' def test_enter_promotion(self): @patch.object(my_app.models.FooClass, 'bar') def fake_bar(self, mock_my_method): print "Do something I want!" return True self.client.get(reverse(view)) 我究竟做错了什么?
82 python  mocking 

6
伪造RS232串行端口
我正在开发一个项目,该项目具有许多通过RS232串行端口连接到部署机器的硬件传感器。 但是...我在没有物理RS232串行端口的机器上进行开发,但是我想制作一些伪造的串行端口,我可以连接这些端口并从中输出数据,以伪造硬件传感器的输入。 有谁知道一种在Windows XP上创建伪串行端口并对其进行控制的方法吗?

5
如何起订索引财产
我正在尝试模拟对索引属性的调用。即,我想起以下几点: object result = myDictionaryCollection["SomeKeyValue"]; 还有二传手的价值 myDictionaryCollection["SomeKeyValue"] = myNewValue; 我这样做是因为我需要模拟应用程序使用的类的功能。 有谁知道如何用起订量做到这一点?我尝试了以下方面的变体: Dictionary&lt;string, object&gt; MyContainer = new Dictionary&lt;string, object&gt;(); mock.ExpectGet&lt;object&gt;( p =&gt; p[It.IsAny&lt;string&gt;()]).Returns(MyContainer[(string s)]); 但这不能编译。 最小起订量是我想要实现的目标吗,有人能举例说明吗?
81 c#  tdd  mocking  moq 

9
我可以在包装函数之前修补Python装饰器吗?
我有一个带有装饰器的函数,我正在Python Mock库的帮助下进行测试。我想mock.patch用一个仅调用函数的模拟“ bypass”装饰器代替真正的装饰器。 我不知道的是如何在真正的装饰器包装功能之前应用补丁。我在补丁目标上尝试了几种不同的变体,并对补丁和导入语句重新排序,但均未成功。有任何想法吗?

8
我如何模拟没有接口的类?
我正在Windows 7中使用C#在.NET 4.0上工作。 我想使用模拟测试某些方法之间的通信。唯一的问题是我想在不实现接口的情况下做到这一点。那可能吗? 我刚刚阅读了很多关于模拟对象的主题和一些教程,但是它们全部都用于模拟接口,而不是类。我尝试使用Rhino和Moq框架。
81 c#  mocking  tdd 

6
在node.js中模拟数据库?
我如何在我的node.js应用程序中模拟数据库,在本例mongodb中将其用作博客REST API的后端? 当然,我可以将数据库设置为特定的testing数据库,但是我仍然会保存数据,不仅要测试我的代码,还要测试数据库,所以我实际上不是在进行单元测试,而是在进行集成测试。 那该怎么办?创建数据库包装程序作为应用程序和数据库之间的中间层,并在测试时替换DAL? // app.js var express = require('express'); app = express(), mongo = require('mongoskin'), db = mongo.db('localhost:27017/test?auto_reconnect'); app.get('/posts/:slug', function(req, res){ db.collection('posts').findOne({slug: req.params.slug}, function (err, post) { res.send(JSON.stringify(post), 200); }); }); app.listen(3000); // test.js r = require('requestah')(3000); describe("Does some testing", function() { it("Fetches a blogpost by slug", function(done) { …

6
可以在Kotlin中使用Mockito吗?
我面临的问题是Matchers.anyObject()回报null。当用于仅接受非空类型的模拟方法时,它将导致引发“应该不为空”异常。 `when`(mockedBackend.login(anyObject())).thenAnswer { invocationOnMock -&gt; someResponse } 模拟方法: public open fun login(userCredentials: UserCredentials): Response
78 java  mocking  mockito  kotlin 

3
用补丁模拟两个功能进行单元测试
我有一个要单元测试的功能,其中包含调用其他两个功能的功能。我不确定如何使用补丁同时模拟两个函数。我在下面提供了我的意思的示例。当我进行鼻子测试时,测试通过了,但是我觉得必须有一种更清洁的方法来进行测试,而我实际上并不了解有关f.close()的内容。 目录结构如下所示: program/ program/ data.py tests/ data_test.py data.py: import cPickle def write_out(file_path, data): f = open(file_path, 'wb') cPickle.dump(data, f) f.close() data_test.py: from mock import MagicMock, patch def test_write_out(): path = '~/collection' mock_open = MagicMock() mock_pickle = MagicMock() f_mock = MagicMock() with patch('__builtin__.open', mock_open): f = mock_open.return_value f.method.return_value = path with …

11
在鼻子下面测试Python代码时应如何验证日志消息?
我正在尝试编写一个简单的单元测试,该测试将验证在特定条件下我的应用程序中的类将通过标准日志记录API记录错误。我想不出最干净的方法来测试这种情况。 我知道鼻子已经通过它的日志记录插件捕获了日志输出,但这似乎旨在作为失败测试的报告和调试辅助工具。 我可以看到两种方法: 以零散方式(mymodule.logging =模拟日志模块)或使用适当的模拟库来模拟日志记录模块。 编写或使用现有的鼻子插件捕获输出并进行验证。 如果我采用前一种方法,那么我想知道在嘲笑日志记录模块之前将全局状态重置为原来状态的最干净方法是什么。 期待您对此的提示和技巧...

7
模拟boto3 S3客户端方法Python
我正在尝试从boto3 s3客户端对象模拟一个单独的方法来引发异常。但是我需要所有其他方法来使此类正常工作。 这样一来,我可以在执行upload_part_copy并发生错误时测试单个异常测试 第一次尝试 import boto3 from mock import patch with patch('botocore.client.S3.upload_part_copy', side_effect=Exception('Error Uploading')) as mock: client = boto3.client('s3') # Should return actual result o = client.get_object(Bucket='my-bucket', Key='my-key') # Should return mocked exception e = client.upload_part_copy() 但是,这将产生以下错误: ImportError: No module named S3 第二次尝试 查看botocore.client.py源代码后,我发现它做的很聪明,并且该方法upload_part_copy不存在。我发现似乎要打电话给BaseClient._make_api_call我,所以我试图模拟 import boto3 from mock import patch …

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.