Questions tagged «mocking»

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

10
模拟Java InputStream
请提供指针以帮助我模拟该java InputStream对象。这是我希望模拟的代码行: InputStreamReader inputData = new InputStreamReader(System.in); bufferdReader = new BufferedReader(inputData); bufferdReader.readLine();
77 java  mocking 

4
多个Moq It.Is <string>()匹配参数
使用Moq,拥有多个匹配参数是否有效? It.Is&lt;string&gt;() 在此示例中,我希望mockMembershipService返回一个不同的ProviderUserKey,具体取决于提供的用户。 mockMembershipService.Setup( x =&gt; x.GetUser( It.Is&lt;string&gt;( s =&gt; s.Contains("Joe"))) .ProviderUserKey) .Returns("1234abcd"); mockMembershipService.Setup( x =&gt; x.GetUser( It.Is&lt;string&gt;( s =&gt; s.Contains("Tracy"))) .ProviderUserKey) .Returns("5678efgh"); SetUp默认为第二条语句,而不是根据各自的价值进行评估。
76 c#  unit-testing  mocking  moq 

3
Python模拟中的模拟属性?
我mock在Python中使用时遇到了一些困难: def method_under_test(): r = requests.post("http://localhost/post") print r.ok # prints "&lt;MagicMock name='post().ok' id='11111111'&gt;" if r.ok: return StartResult() else: raise Exception() class MethodUnderTestTest(TestCase): def test_method_under_test(self): with patch('requests.post') as patched_post: patched_post.return_value.ok = True result = method_under_test() self.assertEqual(type(result), StartResult, "Failed to return a StartResult.") 测试实际上返回正确的值,但r.ok它是Mock对象,不是True。您如何在Pythonmock库中模拟属性?

2
moq objects返回方法,应返回一个空对象
我正在开发Web API,我想出的一项测试是,如果客户端使用物理测试ID(物理测试是我正在寻找的资源)进行GET操作,但找不到该物理测试,则Web API应该返回404状态。 现在,我正在使用moq框架进行测试,并且具有以下代码: [TestMethod] public void then_if_physical_test_not_found_return_not_found_status() { var unitOfWork = new Mock&lt;IUnitOfWork&gt;(); var repository = new Mock&lt;IRepository&lt;PhysicalTest&gt;&gt;(); repository.Setup(r =&gt; r.FindById(It.IsAny&lt;int&gt;())).Returns(); unitOfWork.Setup(m =&gt; m.PhysicalTests).Returns(repository.Object); var pt = new PhysicalTestResource(unitOfWork.Object); HttpResponseMessage&lt;PhysicalTest&gt; response = pt.GetPhysicalTest(43); Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode) } 我需要Return()方法来返回一个空对象,这将是如果找不到资源则实际API方法将返回的对象。 我尝试在Return()方法中将null作为参数发送,但没有成功。

4
模拟或存根以进行链式通话
protected int parseExpire(CacheContext ctx) throws AttributeDefineException { Method targetMethod = ctx.getTargetMethod(); CacheEnable cacheEnable = targetMethod.getAnnotation(CacheEnable.class); ExpireExpr cacheExpire = targetMethod.getAnnotation(ExpireExpr.class); // check for duplicate setting if (cacheEnable.expire() != CacheAttribute.DO_NOT_EXPIRE &amp;&amp; cacheExpire != null) { throw new AttributeDefineException("expire are defined both in @CacheEnable and @ExpireExpr"); } // expire time defined in @CacheEnable …

4
使用python的模拟patch.object更改另一个方法内调用的方法的返回值
是否可以模拟我要测试的另一个函数中调用的函数的返回值?我希望模拟方法(在我正在测试的许多方法中都会被调用)在每次调用时都返回我指定的变量。例如: class Foo: def method_1(): results = uses_some_other_method() def method_n(): results = uses_some_other_method() 在单元测试中,我想使用模拟来更改的返回值,uses_some_other_method()以便在每次调用时Foo,它将返回我定义的内容。@patch.object(...)

6
如何使用Jest模拟同一模块中的函数
更新:我在https://github.com/magicmark/jest-how-do-i-mock-x/blob/master/src/function-in-same-module/README中收集了此方法和其他方法。 md 正确模拟以下示例的最佳方法是什么? 问题在于,导入时间过后,foo将原始引用保持不变bar。 module.js: export function bar () { return 'bar'; } export function foo () { return `I am foo. bar is ${bar()}`; } module.test.js: import * as module from '../src/module'; describe('module', () =&gt; { let barSpy; beforeEach(() =&gt; { barSpy = jest.spyOn( module, 'bar' ).mockImplementation(jest.fn()); }); afterEach(() …

4
Python:模拟上下文管理器
我不明白为什么无法在此示例中模拟NamedTemporaryFile.name: from mock import Mock, patch import unittest import tempfile def myfunc(): with tempfile.NamedTemporaryFile() as mytmp: return mytmp.name class TestMock(unittest.TestCase): @patch('tempfile.NamedTemporaryFile') def test_cm(self, mock_tmp): mytmpname = 'abcde' mock_tmp.__enter__.return_value.name = mytmpname self.assertEqual(myfunc(), mytmpname) 测试结果在: AssertionError: &lt;MagicMock name='NamedTemporaryFile().__enter__().name' id='140275675011280'&gt; != 'abcde'
76 python  mocking 

5
如何在Django中模拟用户和请求
我有与请求对象或用户对象进行交互的Django代码。例如: foo_model_instance = models.get_or_create_foo_from_user(request.user) 如果要使用django python shell进行测试或在单元测试中进行测试,您将在其中传递什么?这里只是一个User对象即可,但是对模拟请求对象的需求也经常出现。 对于外壳程序或单元测试: 您如何嘲笑用户? 您如何模拟请求?

12
@Mock注释后,模拟实例为null
我尝试运行此测试: @Mock IRoutingObjHttpClient routingClientMock; @Mock IRoutingResponseRepository routingResponseRepositoryMock; @Test public void testSendRoutingRequest() throws Exception { CompleteRoutingResponse completeRoutingResponse = new CompleteRoutingResponse(); completeRoutingResponse.regression_latencyMillis = 500L; Mockito.when(routingClientMock.sendRoutingRequest(any(RoutingRequest.class))).thenReturn(completeRoutingResponse); RoutingObjHttpClientWithReRun routingObjHttpClientWithReRun = new RoutingObjHttpClientWithReRun (routingClientMock, routingResponseRepositoryMock); ... } 但我得到NullPointerException为: Mockito.when(routingClientMock. 我想念什么?

10
用PHPUnit模拟私有方法
我有一个关于使用PHPUnit模拟类中的私有方法的问题。让我举一个例子: class A { public function b() { // some code $this-&gt;c(); // some more code } private function c(){ // some code } } 我该如何对私有方法的结果进行存根以测试公共函数的更多代码部分。 在这里解决了部分阅读
73 php  mocking  phpunit 

7
如何在RSpec中多次说“ any_instance”“ should_receive”
我在rails中有一个导入控制器,该控制器将具有多个记录的多个csv文件导入到数据库中。我想在RSpec中测试是否通过使用RSpec实际保存了记录: &lt;Model&gt;.any_instance.should_receive(:save).at_least(:once) 但是我得到错误说: The message 'save' was received by &lt;model instance&gt; but has already been received by &lt;another model instance&gt; 人为的控制器示例: rows = CSV.parse(uploaded_file.tempfile, col_sep: "|") ActiveRecord::Base.transaction do rows.each do |row| mutation = Mutation.new row.each_with_index do |value, index| Mutation.send("#{attribute_order[index]}=", value) end mutation.save end 是否可以使用RSpec对此进行测试,或者有任何解决方法?

6
模拟静态方法
最近,我开始使用Moq进行单元测试。我使用Moq来模拟不需要测试的类。 您通常如何处理静态方法? public void foo(string filePath) { File f = StaticClass.GetFile(filePath); } 怎么会StaticClass.GetFile()嘲笑这个静态方法? 附言:对于您建议的最小起订量和单元测试,我将不胜感激。
73 c#  unit-testing  mocking  moq 

2
python模拟-在不妨碍实现的情况下修补方法
有没有一种干净的方法来修补对象,以使assert_call*助手进入测试用例,而无需实际删除操作? 例如,如何修改该@patch行以通过以下测试: from unittest import TestCase from mock import patch class Potato(object): def foo(self, n): return self.bar(n) def bar(self, n): return n + 2 class PotatoTest(TestCase): @patch.object(Potato, 'foo') def test_something(self, mock): spud = Potato() forty_two = spud.foo(n=40) mock.assert_called_once_with(n=40) self.assertEqual(forty_two, 42) 我可能会使用一起破解side_effect,但是我希望有一种更好的方法可以在所有函数,类方法,静态方法,未绑定方法等上以相同的方式工作。
73 python  mocking 


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.