java - @InjectMock 是否用所有其他 bean 中的模拟替换 bean?
问题描述
如果我注释
@InjectMock
MyClass myclass;
在测试中,这是否意味着在所有情况下其他 bean 都使用 的依赖项MyClass
进行初始化,它们将使用这个模拟实例进行初始化?
换句话说,如果我有
@ApplicationScope
class MyClass {
在某个地方,它会被忽略吗?
解决方案
我猜你有一个错字,应该有@InjectMocks
。对于您的问题:
这是否意味着,在所有情况下,其他 bean 都使用 MyClass 的依赖项进行初始化,它们将使用这个模拟实例进行初始化?
据我了解,答案是否定的。这个
@InjectMocks
MyClass myclass;
不会创建一个模拟,MyClass
也不会使其以任何方式全局可访问(或在任何地方注入),但是当有任何可用时,它会将其他模拟注入MyClass
. 例如,如果您MyClass
是这样的:
@Component
public MyClass {
@Resource
private SomeResource someResource;
}
using@InjectMocks
像这样使用时会有意义:
@Mock
private SomeResource someResource;
@InjectMocks
private MyClass myClass;
someResource
那么对in 的任何调用myClass
实际上都将针对@Mock
您可能希望根据需要存根的那个。
这种实例的创建MyClass
和模拟的注入发生在每个@Test
人身上。
推荐阅读
- google-colaboratory - colab 截断包含超过 20 万个文件的文件夹
- javascript - 尝试循环遍历 ListBoxFor() 时未定义 select.options
- asp.net-core-3.1 - AzureCliCredential 给出错误,请运行“az login”来设置帐户
- mitmproxy - 有没有办法在后台以编程方式启动 mitmproxy v.7.0.2?
- python - 使用 pandas 从数据框中的列中仅删除前两个字符
- c++ - 此剪辑中共享指针的范围
- nativescript - Nativescript 8:参考错误:带有 ably-nativescript 的窗口
- swift - 访问类属性时的 EXC_BAD_ACCESS
- woocommerce - 在产品类别概述的标题下显示 Woocommerce 产品的元描述
- java - 如何放入动态值并将其保存在HashMap中?