我有一个这样的课程
class ClassA {
@Injected
Dao daos;
private String str = ClassB.getString();
public void myMethod(){
useMyString(str);
}
}
在上面的代码中,我有一个类ClassA,它使用由依赖注入框架注入的几个Injectable。它有一个变量str,它从ClassB中的静态方法获得,稍后在myMethod()方法中使用。我想测试myMethod()方法,但我要模拟变量str。我正在使用如下所示的TestNG测试:
class ClassATest{
@Injectable
Dao dao;
@Tested
ClassA classA;
@Mocked
ClassB classB;
@Test
public void myTest(){
new NonStrictExpectations(){
{
ClassB.getString(anyString);
result = "mocked"
}
}
classA.myMethod();
}
}
在上面的测试中,因为classA已经被JMockit初始化,因为它被注释为@Tested,NonStrictExpectations块没有任何效果。我想知道如何在初始化@Tested类时使模拟定义生效?