Đối với một bài kiểm tra đơn vị, bạn sẽ có thể viết mã theo cách như vậy để cách ly việc sử dụng OkHttp. Khi làm điều này, bạn có thể giả lập khách hàng (sử dụng một cái gì đó như Mockito) và có nó hoạt động theo cách bạn muốn. Sau khi tất cả, trong một bài kiểm tra đơn vị, chúng tôi chỉ muốn kiểm tra một đoạn mã duy nhất, không phải bất kỳ phụ thuộc nào của nó.
Điều gì đó tương tự trong Java. Tương tự như vậy, mẫu hoạt động ở nơi khác (như Javascript)
public class ClassUnderTest {
private final OkHttpClient client;
public ClassUnderTest(OkHttpClient client) {
this.client = client;
}
// Other code...
}
// In your tests
OkHttpClient mockClient = mock(OkHttpClient.class);
when(mockClient.newCall(any(Request.class)).thenThrow(...);
ClassUnderTest testClass = new ClassUnderTest(mockClient);
verify(mockClient).doSomething();
Để kiểm tra tích hợp, mockwebserver có vẻ là đặt cược tốt nhất của bạn (như những người khác đã đề cập).
Nguồn
2016-10-22 21:42:41
Hmm, [mock-server] (http://www.mock-server.com) có thể là những gì tôi đang tìm kiếm. –
Tôi tìm thấy gần nhất [angular/in-memory-web-api'] (https://github.com/angular/in-memory-web-api) trong thế giới web (TypeScript/JavaScript, Angular 2) . Ví dụ của nó thiếu, sẽ là tốt để biết nếu nó hỗ trợ đầy đủ CRUD qua các động từ HTTP. –