public class A{
private final B b;
public void meth() {
//Some code
Integer a = b.some_method(a,fun(b));
//Some code
}
private fun(int b) {
return b;
}
}
when(b.some_method(anyInt(),anyInt())).thenReturn(100)
为类A编写单元测试时如何模拟外部依赖关系。当我以上述方式模拟依赖关系时,“a”的值没有按预期分配给100。
您可以使用powermock
库模拟最终对象。这是他们wiki中的实现测试等级:
public class StateFormatter {
private final StateHolder stateHolder;
public StateFormatter(StateHolder stateHolder) {
this.stateHolder = stateHolder;
}
public String getFormattedState() {
String safeState = "State information is missing";
final String actualState = stateHolder.getState();
if (actualState != null) {
safeState = actualState;
}
return safeState;
}
}
测试片段:
StateHolder stateHolderMock = createMock(StateHolder.class);
StateFormatter tested = new StateFormatter(stateHolderMock);
expect(stateHolderMock.getState()).andReturn(expectedState);
// PowerMock.replay(..) must be used.
replay(stateHolderMock);
你可以在这里找到完整的样品。
A
中的构造函数更改为参数化B
来创建对象实际上Jakub的答案是正确的。也许你需要一个例子来理解如何去做。检查一下我的例子的主要方法和构造。
public class A {
private final B b;
public A(B b) {
this.b = b;
}
public void meth() {
//Some code
Integer a = b.some_method(5,fun(5));
//Some code
System.out.println(a);
}
private int fun(int b) {
return b;
}
public static void main(String[] args) {
B b = Mockito.mock(B.class);
when(b.some_method(anyInt(), anyInt())).thenReturn(100);
new A(b).meth();
}
}
对于构造函数,您必须使用模拟设置 B(请参阅 main 方法中的最后一个第三行)。当您运行主方法时,您将看到系统.out的输出,它是100。
如果我正在创建一个带有如下头文件的静态库: 在我自己的项目中,我可以告诉编译器(在我的例子中是Visual Studio)在哪里查找SomeHeaderFile.h。但是,我不希望我的用户关心这一点--他们应该能够包含我的头,而不必通知编译器SomeHeaderFile.h的位置。 这类情况通常如何处理?
我正在尝试将单元测试添加到一些遗留代码中,该代码具有传递给它的String类名,并使用创建一个实现特定处理程序接口的对象。我可以控制我正在传递的类名,我可以获取指向新处理程序对象的指针(通过调用),并且我想使用Mockito观察对它的调用。 我目前的解决方案是: 创建一个实现接口的新测试类。 让该测试类包含一个也实现接口的Mockito mock对象。 手动将所有接口方法传递给模拟对象。 使模拟对
问题内容: 为对象 声明关键字有什么用?例如: 问题答案: 使用“ final”关键字可使您声明的变量不变。最初分配后,将无法重新分配。 但是,这不一定意味着变量引用的实例状态是不可变的,仅引用本身是不可变的。 在变量上使用“ final”关键字有几个原因。一种是优化,通过将变量声明为final来允许值被记忆。 使用最终变量的另一种情况是方法中的内部类需要访问声明方法中的变量。以下代码说明了这一点
问题内容: 这个问题已经在这里有了答案 : 10年前关闭。 可能重复: 何时使用最终版 为对象 声明关键字有什么用?例如: 问题答案: 使用“ final”关键字可使您声明的变量不变。最初分配后,将无法重新分配。 但是,这不一定意味着变量引用的实例状态是不可变的,仅引用本身是不可变的。 在变量上使用“ final”关键字有几个原因。一种是优化,通过将变量声明为final来允许值被记忆。 使用最终变
https://github.com/brianjvarley/react-native-prototyping/blob/i18nprovider-feature/src/modules/languageprovider/tests/languageprovider-test.js
本文向大家介绍浅述Javascript的外部对象,包括了浅述Javascript的外部对象的使用技巧和注意事项,需要的朋友参考一下 Window 浏览器: > 1.外部对象就是浏览器提供的API -- **BOM** > 2.这些对象由w3c规定,由浏览器开发者设计并开发 > 3.这些对象分为2部分,其中BOM包含了DOM > 4.我们可以通过js访问这些对象 # 外部对象 > BOM (Brow