Tôi có đoạn mã sau:bất kỳ (lớp MyClass.class) nào thực sự chỉ phù hợp với các lớp thuộc loại của lớp đã vượt qua?
verify(javaCompiler, times(1)).writeJavaAndCompile(any(ContractCompilationUnit.class), eq(outputDirectory));
verify(javaCompiler, times(1)).writeJavaAndCompile(any(ParamCompilationUnit.class), eq(outputDirectory));
và mã của tôi là như sau:
javaCompiler.writeJavaAndCompile(new ContractCompilationUnit(), outputDirectory);
javaCompiler.writeJavaAndCompile(new ParamCompilationUnit(), outputDirectory);
Mã này được không, vì nó dường như 1st xác minh thấy rằng có 2 cuộc gọi đến javaCompiler.writeJavaAndCompile()
. Không thể nhận ra rằng chỉ có một cuộc gọi kiểu ContractCompilationUnit
.
Quy trình chuẩn để tránh hành vi này (ngoài việc phải viết đối sánh của riêng mình) là gì?
Vâng, chắc chắn 'isA'. Nhưng XIN không viết 'lần (1)' - nó không thêm bất cứ thứ gì và nó làm cho da của tôi bò. –
@DavidWallace: Tôi chỉ đơn thuần sao chép mã gốc của OP :) Không sử dụng Mockito, tôi có lẽ có thể xóa hoàn toàn cuộc gọi đó? –
Cảm ơn bạn đã làm như vậy, @JonSkeet. Bạn vừa làm cho thế giới trở thành một nơi yên tĩnh hơn. –