Có thể đặt mô hình như vậy sau khi sử dụng trong chu kỳ, ví dụ:Bộ giả lập mockito Java
for(String key: mySet) { ...}
Cảm ơn.
Có thể đặt mô hình như vậy sau khi sử dụng trong chu kỳ, ví dụ:Bộ giả lập mockito Java
for(String key: mySet) { ...}
Cảm ơn.
Có một vài lựa chọn:
Ví dụ:
Set<String> mySet = (Set<String>) mock(Set.class);
--or--
@Mock
private Set<String> mySet;
@Before
public void doBefore() throws Exception {
MockitoAnnotations.initMocks(this.getClass()); //this should create mocks for your objects...
}
Trong khi trong câu trả lời từ nicholas là hoàn toàn rõ ràng giải thích làm thế nào bạn giả lập một Set, tôi nghĩ rằng câu hỏi của bạn cũng ngụ ý rằng bạn muốn giả lập hành vi của các thiết lập trong vòng lặp.
Để đạt được điều đó trước hết bạn cần phải biết rằng mã của bạn là chỉ đường cú pháp và mở rộng để:
for (Iterator iterator = mySet.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
...
}
(Để biết chi tiết về điều đó xem câu hỏi Stackoverflow Which is more efficient, a for-each loop, or an iterator?)
Điều này làm cho rõ ràng rằng bạn cần phải thử phương pháp iterator()
. Sau khi bạn thiết lập mô hình như được mô tả bởi nicholas, bạn giả lập phương thức lặp như sau:
when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
@Override
public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
return Arrays.asList("A", "B").iterator();
}
});
Erm ... Bạn đang nói gì vậy ?! – berry120
Anh ta hỏi có cách nào để giả lập hành vi của một tập hợp trong vòng lặp for hay không. – Nicolas