Tôi có lớp sau:PowerMockito: làm thế nào để giả lập các phương thức được gọi bởi hàm tạo?
public class Foo {
public Foo() {
initField1();
initField2();
initField3();
}
}
tôi cần phải thay đổi hành vi (để thử) initField1()
và initField3()
cho họ làm không phải làm gì hay cái gì khác mà họ thực sự làm. Tôi quan tâm đến việc thực thi mã thực tế của initField2().
Tôi muốn viết bài kiểm tra sau:
Foo foo = new Foo();
assertTrue(foo.myGet());
myGet()
trả về một thuộc tính của Foo đã được tính toán bằng cách initField2()
. Tất cả các phương pháp initField()
đều là riêng tư
Tôi làm cách nào để thực hiện việc này?
Cảm ơn sự giúp đỡ của bạn và lời chúc mừng tốt đẹp nhất.
Đây là mã kế thừa. Tôi không muốn sửa đổi lớp đang được kiểm tra bằng cách viết một hàm tạo mới chấp nhận đối số chẳng hạn. Tôi chỉ muốn 'initField2()' được thực thi vì nó chịu trách nhiệm thiết lập trường mà tôi muốn kiểm tra. Tôi không thú vị trong việc kiểm tra phần còn lại của logic của nhà xây dựng. –
Mockito có nghĩa là để giả mạo tương tác, PowerMock có nghĩa là để giả một phần, hoạt động nội bộ của một lớp cho mã di sản, vì vậy câu trả lời này chỉ là đồng bằng sai. – eis