Tôi có một công cụ dòng lệnh thực hiện kiểm tra DNS. Nếu kiểm tra DNS thành công, lệnh sẽ tiếp tục với các tác vụ khác. Tôi đang cố gắng viết các bài kiểm tra đơn vị cho việc này bằng cách sử dụng Mockito. Đây là mã của tôi:Mockito: InvalidUseOfMatchersException
public class Command() {
// ....
void runCommand() {
// ..
dnsCheck(hostname, new InetAddressFactory());
// ..
// do other stuff after dnsCheck
}
void dnsCheck(String hostname, InetAddressFactory factory) {
// calls to verify hostname
}
}
Tôi đang sử dụng InetAddressNhà máy để thực thi tĩnh lớp InetAddress
. Dưới đây là các mã cho các nhà máy:
public class InetAddressFactory {
public InetAddress getByName(String host) throws UnknownHostException {
return InetAddress.getByName(host);
}
}
Dưới đây là đơn vị kiểm tra trường hợp của tôi:
@RunWith(MockitoJUnitRunner.class)
public class CmdTest {
// many functional tests for dnsCheck
// here's the piece of code that is failing
// in this test I want to test the rest of the code (i.e. after dnsCheck)
@Test
void testPostDnsCheck() {
final Cmd cmd = spy(new Cmd());
// this line does not work, and it throws the exception below:
// tried using (InetAddressFactory) anyObject()
doNothing().when(cmd).dnsCheck(HOST, any(InetAddressFactory.class));
cmd.runCommand();
}
}
ngoại lệ trên chạy testPostDnsCheck()
kiểm tra:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
2 matchers expected, 1 recorded.
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
Bất kỳ đầu vào về cách giải quyết này?
Ngớ ngẩn của tôi. Tôi tiếp tục phân tích lý do tại sao tham số thứ 2 tiếp tục cho tôi lỗi. Cảm ơn bạn đã làm rõ. Tôi rất mới với Mockito, đây là lần gặp đầu tiên của tôi. – devang
Cảm ơn người đàn ông. Thông báo ngoại lệ nếu rất khó hiểu, nhưng lời giải thích của bạn rất rõ ràng để hiểu được –