问题标签 [springmockito]
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.
java - 使用 Mockito 和 Spring MVC 的 Junit 测试用例
我有一个控制器类,我正在尝试使用 mockito 进行测试。
我的测试课程如下所示:-
但是当我运行测试类时,我收到以下错误。请帮忙 !
spring - 将模拟注入到 InterceptorHandler
我正在尝试在 InterceptorHandler 中注入一个模拟,但我可以配置它。
我有一个这样的拦截器:
我的测试看起来像这样:
拦截器工作正常,但是当我调试时,我看到拦截器中的服务为空,所以我想知道是否有办法模拟服务?
感谢提前。
java - 在测试中使用 @MockBean 会强制重新加载应用程序上下文
我在 Spring Framework 上运行了几个集成测试,这些测试扩展了名为BaseITCase的基类。
像这样:
问题是其中一个测试有几个声明: @MockBean 在其中,并且在执行该测试的那一刻,Spring 重新创建上下文,并且此测试之后的测试有时会使用错误的 bean(来自使用 @ 完全为测试创建的上下文模拟豆)。我只是通过检查 bean 具有不同的哈希码才发现这一点。
当我使用@EventListener 时,它变得非常重要。因为调用了错误上下文(已经完成执行的测试类的上下文)的侦听器,并且我在那里有错误的 bean。
有什么解决方法吗?
我尝试将所有 @MockBean 声明移至基本类,它工作正常,因为没有创建新的上下文。但是,它使基础课太重了。另外,我试图为这个测试创建一个脏上下文,但是下一个测试失败并显示上下文已经关闭的消息。
java - Spring Boot Rest Api 的单元测试模拟
A 我们正在使用 Spring Boot Rest Api 进行服务调用。我猜我们可以将 Junit 用于单元测试用例。但是需要知道除junit之外的其他合适的工具或框架来模拟Spring Boot Rest Api()的单元测试。
spring-boot - @SpyBean 和 Mockito.any() 在验证期间
我遇到以下问题。我有一个弹簧启动测试,我在其中注入和监视mongoDbChannel
bean。然后我尝试启动正常的工作流程并验证是否send
在 bean 上调用了该方法。
结果,我收到any
与具体参数值不匹配的错误消息。然而,通常any
意味着任何参数值。这里出了什么问题?
已编辑:我正在使用 java 8。我尝试使用any(GenericMessage.class)
,any(Message.class)
但效果相同。
java - 使用 Mockito 和 MockMvc 的方法中的缺失代码属性
当MockMvcBuilders.standaloneSetup(myService);
执行时,我返回了这个堆栈跟踪:
可能有什么问题?
谢谢
spring - @Mock 注释的意义是什么?
我有一个关于在控制器测试中创建 bean 的问题。比如有一个这样的测试
和映射到的控制器方法
/VT/入口/
EntryService
带有注释的@Service
注释,并且MainApplicationConfiguration.class
是带有@EnableWebMvc
和扫描项目的配置EntryService
。
我想证明这个控制器真的EntryService
在一个真实的应用程序中使用它,并且所有的都是由MainApplicationConfiguration.class
.
问题是:为什么在我的测试执行范围内我的控制器代码中entryService
带有注释?@Mock
不应该只针对那个实例,并且控制器内部应该实例化另一个bean(EntryService),为什么这个注释模拟了该bean的所有出现(在测试范围内)?我在想,我应该编写整个其他上下文网络上下文,而不是在MainApplicationConfiguration.class
内部模拟它并替换当前定义。我非常困惑为什么这个简单的注释会做出这样的事情。
如果有人能理解这种魔力,请说出@InjectMock 和@Mock 有什么区别?
感谢您的关注!对不起,如果我的问题很愚蠢。我很新,它有效,但我还没有魔法。
java - 不可能用 DAO mock 编写集成测试控制器?
我变得疯狂,我尝试了各种测试运行器和可能注释的所有可能组合进行测试,我需要的最接近的解决方案如下:
我很好地在我的控制器方法中进入调试模式,在服务方法中但是当我看到 DAO 类型时,它不是 Mock 并且 findAll() 总是返回空的 ArrayList(),即使我这样做:
我没有提出异常,我的 DAO 没有被嘲笑,尽管我找到了所有 tuto,但我不知道该怎么做。我找到的最接近我需要的教程是这个带有 Spring MVC 测试的单元测试控制器,但还不够,因为他希望将模拟服务注入控制器以测试控制器,我想模拟注入到控制器中的真实服务(我想测试控制器+服务)。
在我看来,我已经通过在测试类上使用注释来做到这一点,该注释指定了 Spring 应用程序必须在测试模式下实例化哪些类以及必须模拟哪些类,但我不记得'-_-.
需要你的帮助,这让我发疯!
非常感谢你 !!!
java - 如何在测试期间使用 Mapstruct 创建的映射器作为@Mock
上下文
我有一个简单的测试方法 testFindByUserName。我使用模拟库。我有由 Mapstruct 库创建的 @Mock UserMapper。
问题
Mocito 不处理我用来将用户映射到 userDto 的静态方法 INSTANCE。我有错误:error:org.mockito.exceptions.misusing.MissingMethodInvocationException: when() 需要一个必须是“模拟方法调用”的参数。例如:when(mock.getArticles()).thenReturn(articles);
此外,此错误可能会出现,因为: 1. 您存根以下任一方法:final/private/equals()/hashCode() 方法。这些方法不能被存根/验证。不支持在非公共父类上声明的模拟方法。2. 在 when() 中,您不会在 mock 上调用方法,而是在其他对象上调用方法。
如何解决这个问题。
编码
我测试的方法
junit - When/thenReturn 未映射
我不明白为什么我的 when/thenReturn 没有映射到模拟 bean。
在调试期间,我可以看到“UserDTO userDto = userService.update(id, entity);”行之后的“userDto” 在测试的控制器中等于 null。
知道我做错了什么吗?
测试文件 UsersControllerTest.java :
测试的 UsersController 类:
模拟的服务类: