我在看下面的代码
import mockit.Mock;
import mockit.MockUp;
new MockUp<Fubar>() {
@Mock
delete(final String fooId) {
assertEquals(fooId, "foo123");
}
};
我注意到这并没有分配给任何变量。我猜这会导致fubar的每个示例都用这个模拟的delete方法定义,即使它是在其他地方示例化的(我猜这是以这样一种方式发生的,时间并不重要?)有什么叫做mockit的东西和mockito不同吗?我在现有的代码中不止一次地看到过这种模式,所以我不认为这是一个打字错误。
编辑:请不要在没有解释原因的情况下对此进行否决。这是一个我已经花了大量时间试图研究的合法问题。
编辑:没有一篇文章讨论了代码可能的意图是什么,而是详述了我未能确定使用了什么模拟框架。
1条答案
按热度按时间83qze16e1#
它重新定义了中的delete方法
Fubar
而是包含模拟版本。这会影响之后创建的所有示例,直到在每个测试结束时恢复原始示例。这是可能的,因为它使用自己的java代理,允许在程序运行时重新定义类。例如:
输出为:“调用mock”