Bạn đã có vấn đề mô hình của bạn phải hành động như một đậu? Và bạn không thể tạo đối tượng với việc thực hiện thực tế? Và giao diện là quá lớn, vì vậy bạn sẽ không tạo ra một innerclass cho các bài kiểm tra? Tôi đã có vấn đề này quá. Tôi giải quyết nó với câu trả lời trong mockito.Trước hết chúng ta cần một giao diện. Trên giao diện chúng ta định nghĩa một setter và getter một. Hãy tưởng tượng chúng tôi phải có khả năng để có được trở lại các giá trị mà chúng tôi thiết lập. Giao diện của mẫu sẽ khá dễ dàng, nhưng với một chút trí tưởng tượng, chúng tôi biết các giao diện sẽ có rất nhiều phương pháp. Và chúng tôi không muốn để thực hiện các lớp học trong thử nghiệm của chúng tôi.Giao diện sẽ trông như thế này:khu vực giao diện SetGet {} void setString(String newString); Chuỗi getString();}Chúng tôi tạo ra mô hình như bình thường:SetGetSample giả = Mockito.mock(SetGetSample.class);Sau mã snipped cho thấy làm thế nào để ghi lại các giá trị được thiết lập trên setString.doAnswer (mới trả lời() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
theString = (String) invocation.getArguments()[0];
return null;
}
}).when(mock).setString(anyString());
We need the Answer for recording the input and do not give something back. Because there is a void return value we have to do the answer with the command doAnswer since the when only can be used on methods which have a return value.
We know there is a string used as parameter so we can cast the first argument to String. In other cases we should check if it is an instance of this type. And we set our field to the given value. (Yep, you read correct we need a field in the test class to set the value.
Now the code to get the recorded value:
when(mock.getString()).thenAnswer(new Answer() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
return theString;
}
});
You see, know we use the standard when but we use the thenAnswer instead of the thenReturn the difference is: answer will everytime be executed. Return remembers the value we told them in the when. And the following test will become a green bar.
đang được dịch, vui lòng đợi..