Tôi đang thử nghiệm một phương thức void xảy ra để gọi một số phương thức void khác trong một lớp (tất cả các phương thức này nằm trong cùng một lớp). Phương pháp này là gì đó dọc theo các dòng này ...Làm thế nào để bỏ qua một số lời gọi phương thức void bên trong một phương thức void trong Mockito
public void methodToTest() {
methodA();
methodB();
}
void methodA() {
methodA1();
methodA2();
methodA3();
}
Điều tôi muốn làm là gây ra methodA()
ở trên để không làm gì cả. Đó là, tôi muốn methodA()
về cơ bản là như thế này:
void methodA() { }
Tôi đã thử cả hai doThrow()
và doAnswer()
trên methodA()
vô ích. Nó như thể cả hai đều bị bỏ qua hoàn toàn.
Một ví dụ về những gì tôi đã cố gắng ...
doThrow(new RuntimeException()).when(mockedClass).methodA();
Có cách nào để làm điều này chỉ sử dụng Mockito? Tôi không có quyền tự do thay đổi lớp đang được sửa đổi.
Điều này sẽ hoạt động, bạn có chắc 'phương thứcA' không phải là' cuối cùng' không? – Brice
'phương thứcA' không phải là 'cuối cùng' –
nhìn lại đoạn mã của bạn trông giống như bạn muốn thực hiện một phần mô phỏng, có thể chỉ thực hiện' phương thức', trong khi bạn đang thực hiện 'phương thứcA'. Bạn chắc chắn nhất là sử dụng 'mock (YourObject.class)', sau đó tất nhiên một mô hình không làm gì cả, và chắc chắn sẽ không bao giờ thực thi mã thực. Bạn có thể đạt được những gì bạn muốn một 'spy (YourObject.class)' nó sẽ thực thi mã thực theo mặc định. Tuy nhiên một phần mocks được công nhận là mùi thử nghiệm, nếu không phải là mùi thiết kế, bạn nên tìm kiếm các cơ hội để làm cho hành vi của 'methodA' như là một phụ thuộc mà bạn có thể phơi bày trong API của bạn như là một' AStrategy' chẳng hạn. – Brice