我对摩基托并不陌生,但这次我在工作中发现了一个有趣的案例。我希望你能帮我解决这件事。
我需要注入mock来改变测试过程中的某些方法行为。问题是,bean结构是嵌套的,并且这个bean在其他bean内部,不能从test方法访问。我的代码如下所示:
@Component
class TestedService {
@Autowired
NestedService nestedService;
}
@Component
class NestedService {
@Autowired
MoreNestedService moreNestedService;
}
@Component
class MoreNestedService {
@Autowired
NestedDao nestedDao;
}
@Component
class NestedDao {
public int method(){
//typical dao method, details omitted
};
}
所以在我的测试中,我希望调用nestedDAO.method返回模拟答案。
class Test {
@Mock
NestedDao nestedDao;
@InjectMocks
TestedService testedSevice;
@Test
void test() {
Mockito.when(nestedDao.method()).thenReturn(1);
//data preparation omitted
testedSevice.callNestedServiceThatCallsNestedDaoMethod();
//assertions omitted
}
}
我尝试执行一个initmocks:
@BeforeMethod
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
还要在我的测试类上添加注释:
@RunWith(MockitoJUnitRunner.class)
总是从方法获得nullpointers或错误的答案(不是嘲弄的)。
我猜是这个嵌套的调用错误,使得无法嘲弄这个刀。我还读到过@injectmocks只能与setter或构造函数注入一起工作,我没有使用这些功能(只是在私有字段上使用@autowire),但当我尝试时它没有工作。
你猜我错过了什么吗?;)
您可以使用@mockbean代替@mock和@injectionmock。
@RunWith(SpringRunner.class)
@SpringBootTest
class Test {
@MockBean
NestedDao nestedDao;
@Autowired
TestedService testedSevice;
@Test
void test() {
Mockito.when(nestedDao.method()).thenReturn(1);
//data preparation omitted
testedSevice.callNestedServiceThatCallsNestedDaoMethod();
//assertions omitted
}
}
我正在尝试验证是否调用了具有以下签名的方法: 嵌套的参数化 Set 给我带来了困难。我可以让它使用 any() 匹配器正确验证,如下所示: 如Mockito:使用泛型参数进行验证中所述,尽管令人恼火的是,如果我直接静态导入Matchers,它不起作用。任意,并将其称为: 但是在这种情况下,anyMapOf(clazz,clazz)似乎是更合适的匹配器。既然你不会做Set.class,我不知道你会怎
问题内容: 我需要定义一个切入点,该切入点触发使用自定义注释注释的spring服务的所有方法的执行。我想定义切入点的注释将在另一个注释上。 然后该服务将被注释如下 我尝试使用以下切入点定义,但是仅当@Y在服务本身上时才有效,这意味着它看不到注释在@X上 问题答案: 我在应用程序中有这个确切的需求。我找到了这个答案,但不满意无法完成。 经过更多搜索之后,我发现了用于AspectJ / Spring切
我有一个工厂是这样的: 这样的类: 如何正确使用Google Guice来做同样的事情?我尝试了辅助注射,但我不确定如何创建“UrlBuilder”。谁能帮忙?
我有一个相当典型的场景,其中有一个main@实体,他内部的所有内容都是可嵌入的(因此,没有父实体,内部的所有内容都没有意义)。现在JPA 2.0阻止我在另一个@ElementCollection中定义的@Embeddeble中嵌套一个@ElementCollection: JSR-317 2.6可嵌入类和基本类型的集合包含在元素集合中的可嵌入类(包括另一个可嵌入类中的可嵌入类)不得包含元素集合,也
本文向大家介绍Spring实战之注入嵌套Bean操作示例,包括了Spring实战之注入嵌套Bean操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Spring实战之注入嵌套Bean操作。分享给大家供大家参考,具体如下: 一 配置 二 接口 Axe Person 三 实现 Chinese StoneAxe SteelAxe 四 测试类 五 运行 钢斧砍柴真快 更多关于java相关内容
问题内容: 我想将Mockito模拟对象注入到Spring(3+)bean中,以进行JUnit的单元测试。我的bean依赖项当前是通过在私有成员字段上使用注释来注入的。 我考虑过使用,但是我希望注入的bean实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建一个公共的setter,因为我将纯粹出于测试目的而修改接口。 我遵循了Spring社区提供的一些建议,但是未创建该模