alibaba / testable-mock

换种思路写Mock,让单元测试更简单
https://alibaba.github.io/testable-mock/
MIT License
1.83k stars 310 forks source link

被测试类内部方法调用如何mock #228

Closed lawrencewu closed 2 years ago

lawrencewu commented 3 years ago

有一个类有两个方法,如:

package com.alibaba.demo;
public class Student {
    public String getAddr(String username){
        return confirmAddr(username);
    }

    public String confirmAddr(String name) {
        return "SH-PD";
    }
}

测试类代码:

package com.alibaba.demo;
public class StudentTest {

    Student student = new Student();
    private static class Mock {

        @MockMethod(targetClass = Student.class)
        public String confirmAddr(String name) {
            return "SH-HK";
        }
    }

    @Test
    public void testGetAddr() {
        student.getAddr("xiaoming");
    }

    **//这里 confirmAddr被mock了,同一个测试类里面怎么测试这个方法呢?**
    @Test
    public void testConfirmAddr(){

    }
}

测试类和被测试类在同一路径下,命名符合约定,那么如上显示的confirmAddr被mock了,在同一个测试类中如何测试confirmAddr方法呢?

liranGG commented 3 years ago

直接测就行啊,student.confirmAddr("xiaoming"); 你这种操作就是文档的1.2。直接测就行,不管它有没有被mock。