我在java中面临类模拟的问题。
我将使用虚拟类解释问题(以避免与项目相关的安全问题) 我们有一个班级员工
public class Employee {
public int netSalary() {
int sal = totalSal() - 100;
return sal;
}
public int totalSal() {
// code to return value which is making db calls or remote calls
}
}
现在我的问题是如何在没有调用totalSal方法的情况下测试netSalary方法 我试过expect()。和return()以及suppress(method());
但两者都不起作用
答案 0 :(得分:1)
如果这是通过MVC完成的,那么您的员工类应该有一个DAO,可以访问数据库。注入totalSalary
中调用的DAO的模拟版本。
每条评论:
这是基于您上面的代码:
public class MyTest{
private class TestableEmployee extends Employee{
public int totalSal(){
return 55;
}
}
@Test
public void testIt(){
Employee employee = new TestableEmployee();
int netValue = employee.netSalary();
assertEquals(netValue, 55-100);
}
}
答案 1 :(得分:0)
您可以使用Mockito。嘲笑方法:
when(employee.totalSal()).thenReturn(1000);