Questions tagged «mocking»

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

11
使用Mockito验证对象属性值
我有一个方法调用,我想用模拟嘲笑。首先,我创建并注入了将在其上调用该方法的对象的实例。我的目的是验证方法调用中的对象之一。 调用模拟方法时,mockito有没有办法让您断言或验证对象及其属性? 例 Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>anyObject()) anyObject()我不想检查参数对象是否包含某些特定字段,而不是这样做 Mockito.verify(mockedObject) .someMethodOnMockedObject( Mockito.<SomeObjectAsArgument>**compareWithThisObject()**)
264 java  mocking  mockito 

11
如何使用MockMvc检查响应主体中的字符串
我有简单的集成测试 @Test public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() throws Exception { mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON) .content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}")) .andDo(print()) .andExpect(status().isBadRequest()) .andExpect(?); } 在最后一行中,我想将响应正文中收到的字符串与预期字符串进行比较 作为回应,我得到: MockHttpServletResponse: Status = 400 Error message = null Headers = {Content-Type=[application/json]} Content type = application/json Body = "Username already taken" Forwarded URL = null Redirected URL = null 使用content(),body()尝试了一些技巧,但没有任何效果。

9
如何模拟请求和响应?
我正在尝试使用Pythons模拟包来模拟Pythons requests模块。使我在以下情况下工作的基本要求是什么? 在我的views.py中,我有一个函数,该函数每次都以不同的响应进行各种request.get()调用 def myview(request): res1 = requests.get('aurl') res2 = request.get('burl') res3 = request.get('curl') 在我的测试类中,我想做这样的事情,但无法找出确切的方法调用 第1步: # Mock the requests module # when mockedRequests.get('aurl') is called then return 'a response' # when mockedRequests.get('burl') is called then return 'b response' # when mockedRequests.get('curl') is called then return 'c response' 第2步: 给我打电话 …
221 python  mocking  request 


5
如何告诉Mockito模拟对象在下次调用时返回不同的内容?
因此,我正在像这样在类级别上将模拟对象创建为静态变量...在一个测试中,我想Foo.someMethod()返回某个值,而在另一个测试中,我希望它返回一个不同的值。我遇到的问题是,似乎我需要重建模拟才能使其正常工作。我想避免重建模拟,只在每个测试中使用相同的对象。 class TestClass { private static Foo mockFoo; @BeforeClass public static void setUp() { mockFoo = mock(Foo.class); } @Test public void test1() { when(mockFoo.someMethod()).thenReturn(0); TestObject testObj = new TestObject(mockFoo); testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value } @Test public void test2() { when(mockFoo.someMethod()).thenReturn(1); TestObject testObj = new TestObject(mockFoo); …

4
使用Mockito的通用“ any()”方法
我有一个接口,该方法需要一个数组Foo: public interface IBar { void doStuff(Foo[] arr); } 我正在使用Mockito来模拟此接口,我想断言该接口已doStuff()被调用,但是我不想验证传递了什么参数-“无关”。 如何使用any()通用方法而不是编写以下代码anyObject()? IBar bar = mock(IBar.class); ... verify(bar).doStuff((Foo[]) anyObject());


4
在测试Init方法中模拟HttpContext.Current
我正在尝试将单元测试添加到已构建的ASP.NET MVC应用程序中。在单元测试中,我使用以下代码: [TestMethod] public void IndexAction_Should_Return_View() { var controller = new MembershipController(); controller.SetFakeControllerContext("TestUser"); ... } 使用以下助手来模拟控制器上下文: public static class FakeControllerContext { public static HttpContextBase FakeHttpContext(string username) { var context = new Mock<HttpContextBase>(); context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username)); if (!string.IsNullOrEmpty(username)) context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username)); return context.Object; } public static void SetFakeControllerContext(this Controller controller, string …

4
断言对模拟方法的后续调用
模拟有一个有用的assert_called_with()方法。但是,据我了解,这仅检查对方法的最后一次调用。 如果我有连续3次调用该模拟方法的代码,每次使用不同的参数,那么该如何用其特定的参数来断言这3次调用?
175 python  mocking 

7
Moq模拟扩展方法
我已有一个接口... public interface ISomeInterface { void SomeMethod(); } 我已经使用mixin扩展了这个界面 public static class SomeInterfaceExtensions { public static void AnotherMethod(this ISomeInterface someInterface) { // Implementation here } } 我有一个类,这就是我想测试的。 public class Caller { private readonly ISomeInterface someInterface; public Caller(ISomeInterface someInterface) { this.someInterface = someInterface; } public void Main() { someInterface.AnotherMethod(); } } …

5
使用Mockito从模拟中抛出检查的异常
我正在尝试让我的模拟对象之一在调用特定方法时引发已检查的异常。我正在尝试以下。 @Test(expectedExceptions = SomeException.class) public void throwCheckedException() { List<String> list = mock(List.class); when(list.get(0)).thenThrow(new SomeException()); String test = list.get(0); } public class SomeException extends Exception { } 但是,这会产生以下错误。 org.testng.TestException: Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException: Checked exception is invalid for this method! Invalid: com.testing.MockitoCheckedExceptions$SomeException 查看Mockito文档,他们仅使用RuntimeException,是否无法使用Mockito从模拟对象引发已检查的异常?
173 java  mocking  mockito 

9
如何在ASP.Net MVC中模拟控制器上的请求?
我在使用ASP.Net MVC框架的C#中有一个控制器 public class HomeController:Controller{ public ActionResult Index() { if (Request.IsAjaxRequest()) { //do some ajaxy stuff } return View("Index"); } } 我有一些关于模拟的技巧,并希望通过以下代码和RhinoMocks来测试代码 var mocks = new MockRepository(); var mockedhttpContext = mocks.DynamicMock<HttpContextBase>(); var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>(); SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest); var controller = new HomeController(); controller.ControllerContext = new ControllerContext(mockedhttpContext, new RouteData(), controller); var result …

1
Python模拟多个返回值
我正在使用pythons mock.patch并想更改每个调用的返回值。请注意,正在修补的函数没有输入,因此我无法根据输入更改返回值。 这是我的代码供参考。 def get_boolean_response(): response = io.prompt('y/n').lower() while response not in ('y', 'n', 'yes', 'no'): io.echo('Not a valid input. Try again']) response = io.prompt('y/n').lower() return response in ('y', 'yes') 我的测试代码: @mock.patch('io') def test_get_boolean_response(self, mock_io): #setup mock_io.prompt.return_value = ['x','y'] result = operations.get_boolean_response() #test self.assertTrue(result) self.assertEqual(mock_io.prompt.call_count, 2) io.prompt仅仅是“输入”的独立于平台的版本(python 2和3)。因此,最终我将尝试模拟用户的输入。我已经尝试过使用列表作为返回值,但这并不能正常工作。 您可以看到,如果返回值无效,那么我将在此处得到一个无限循环。因此,我需要一种最终更改返回值的方法,以便测试实际上完成。 (回答此问题的另一种可能方法是解释如何在单元测试中模仿用户输入) …

11
模拟对象的目的是什么?
我是单元测试的新手,并且不断听到“模拟对象”一词泛滥的声音。用外行的话,有人可以解释什么是模拟对象,以及在编写单元测试时它们通常用于什么目的?

3
使用Moq确定是否调用方法
据我了解,如果我调用更高级别的方法,则可以测试是否将发生方法调用,即: public abstract class SomeClass() { public void SomeMehod() { SomeOtherMethod(); } internal abstract void SomeOtherMethod(); } 我想测试一下,如果我打电话,SomeMethod()我希望SomeOtherMethod()会被调用。 我认为这种测试可以在模拟框架中使用对吗?
159 c#  .net  unit-testing  mocking  moq 

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.