【发布时间】:2019-03-24 09:29:59
【问题描述】:
我希望在使用 JMockit 测试服务类时模拟域依赖项。问题是,Domain 对象是在 Service 的方法之一中实例化的,并且使用的 Domain 构造函数具有参数。
域类:
package com.example;
public class DomainClass {
String str;
public DomainClass(String s) {
str=s;
}
public String domainMethod() {
return str;
}
}
服务类
package com.example;
public class ServiceClass {
public String serviceMethod() {
return new DomainClass("original").domainMethod();
}
}
如何模拟 ServiceClass 正在使用的 DomainClass?
注意:我不打算更改域或服务类。 (我意识到这段代码很琐碎,可以写得更好,但这只是更复杂代码的一个简单示例。)
测试班(最终答案)
package com.example;
import org.testng.*;
import org.testng.annotations.*;
import mockit.*;
public class TestClass {
@Mocked DomainClass domainClass;
@Test
public void testMethod() {
new Expectations() {{
new DomainClass("original").domainMethod(); result = "dummy";
}};
String ss = new ServiceClass().serviceMethod();
System.out.println(ss);
Assert.assertEquals(ss, "dummy");
}
}
【问题讨论】:
-
您不能在
@BeforeClass方法中记录期望;模拟尚未激活。 -
@Rogério:谢谢!做到了:)