- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有像下面这样的类方法,它创建一个本地对象并调用该本地对象的方法。
public class MyClass {
public someReturn myMethod(){
MyOtherClass otherClassObject = new MyOtherClass();
boolean retBool = otherClassObject.otherClassMethod();
if(retBool){
// do something
}
}
}
public class MyClassTest {
@Test
public testMyMethod(){
MyClass myClassObj = new MyClass();
myClassObj.myMethod();
// please get me here..
}
}
当我测试 myMethod
时,我想模拟 otherClassObject.otherClassMethod
以返回我选择的内容。 otherClassMethod 对消息队列做了一些类,我不想在单元测试中使用它。所以我想在执行 otherClassObj.otherClassMethod() 时返回 true。我知道在这种情况下我必须使用工厂来进行 MyOtherClass
实例化,但它是遗留代码,我现在不想更改任何代码。我看到 Mockito 在这种情况下不提供此设施来模拟 MyOtherClass
但可以使用 PowerMockito。但是,我找不到上述场景的示例,但只找到了静态类。我应该如何在 SUT 的方法中模拟本地对象?
我还提到了其他一些操作系统问题,例如 - Mocking methods of local scope objects with Mockito但他们没有帮助。
代码示例会有很大帮助。
最佳答案
如果您使用的是 PowerMockito,则可以使用 whenNew
方法
它应该看起来像这样:
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class) //tells powerMock we will modify MyClass to intercept calls to new somewhere inside it
public class MyClassTest{
@Test
public void test(){
MyOtherClass myMock = createMock(MyOtherClass.class);
//this will intercept calls to "new MyOtherClass()" in MyClass
whenNew( MyOtherClass.class).withNoArguments().thenReturn( myMock) );
... rest of test goes here
}
另外这篇 SO 帖子也有示例代码 PowerMockito Mocking whenNew Not taking affect
关于java - 使用 Mockito 或 PowerMocktio 在 SUT 的方法中模拟本地对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398283/
我需要一个在测试期间调用时返回一些东西的方法,拥有该方法的类实例被实现为 spy 。 我知道 doNothing() 方法只适用于 void 方法。有没有办法通过返回某些东西的方法获得相同的行为? 谢
我有像下面这样的类方法,它创建一个本地对象并调用该本地对象的方法。 public class MyClass { public someReturn myMethod(){ M
我是一名优秀的程序员,十分优秀!