2016-10-14 13 views
15

Tôi có giàn giáo ứng dụng Android theo hướng dữ liệu. Thêm các thử nghiệm, nhằm bảo hiểm 100%. Sử dụng OkHttp.Proxy trong suốt để kiểm tra phản hồi của máy chủ ngoại tuyến trong Android

Làm cách nào để chặn các cuộc gọi đến máy chủ của tôi một cách minh bạch bằng phản hồi giả?

Muốn kiểm tra đơn vị đầu cuối này cũng như đơn vị. Ví dụ: thiết lập kiểu dựng thành MockServer sẽ tải ứng dụng sẽ hiển thị phản hồi giả lập trong trình mô phỏng.

+0

Hmm, [mock-server] (http://www.mock-server.com) có thể là những gì tôi đang tìm kiếm. –

+0

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. –

Trả lời

1

Bạn có nhìn vào okhttp mockwebserver không?

Tôi sử dụng nó để trả lời mô phỏng và xác minh/hiển thị yêu cầu.

Nếu bạn muốn sử dụng điều này với một loại xây dựng, bạn có thể tạo một tài nguyên Android hoặc hằng số java trong gradle và sau đó khởi động máy chủ và thiết lập đường dẫn cho phù hợp.

+0

Cảm ơn nhưng điều đó dường như không đủ xa. Nó chỉ hữu ích cho thử nghiệm đơn vị, không phải cho thử nghiệm e2e và live-app [không có phụ trợ]. –

0

Đố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).

+0

Cảm ơn nhưng điều đó dường như không đủ xa. Nó chỉ hữu ích cho thử nghiệm đơn vị, không phải cho thử nghiệm e2e và live-app [không có phụ trợ]. –

Các vấn đề liên quan