Cách xác minh một phương thức được gọi hai lần với mockito verify ()


307

Tôi muốn xác minh nếu một phương thức được gọi ít nhất một lần thông qua xác minh mockito. Tôi đã sử dụng xác minh và nó phàn nàn như thế này:

org.mockito.exceptions.verification.TooManyActualInvocations: 
Wanted 1 time:
But was 2 times. Undesired invocation:

Câu trả lời:


519

Sử dụng VerifyingMode thích hợp:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

verify(mockObject, atLeast(2)).someMethod("was called at least twice");
verify(mockObject, times(3)).someMethod("was called exactly three times");

22
Bạn cũng có thể sử dụng Mockito.times(...)thay vì VerificationModeFactory.times(...)nhập tĩnh
Wim Deblauwe

26
import static org.mockito.Mockito.times;. Nói chung, việc nhập các gói có "nội bộ" trong chúng ( import static org.mockito.internal.verification.VerificationModeFactory.times;) không được khuyến khích.
Roger

Có cách nào khác để viết lần (1) không?
Glenn Bech

1
@GlennBech Bạn chỉ có thể bỏ qua điều đó , nó ẩn; mặc định verify(mockObject).someMethod("")sẽ tìm chính xác 1 tương tác (không hơn, không kém). Nếu, thay vào đó, bạn muốn có ít nhất một lời gọi của phương thức, bạn có thể sử dụng trình atLeastOnce()xác định.
Nbrooks

1
@Roger Tôi đồng ý với bạn, đối với một người thực hành TDD mới bắt đầu như tôi, nhập tĩnh khiến tôi bối rối hơn về việc nhớ các phương thức hoặc khung nào đang sử dụng (Mockito, Espresso hoặc chỉ kiểm tra đơn vị bình thường).
Hãy nghĩ mã Twice một lần vào
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.