Cách kiểm tra Mã kết hợp trong Swift
Kiểm tra mã của chúng tôi là một phần cơ bản của quá trình phát triển.
Tuy nhiên, nếu chúng ta đang sử dụng khung Kết hợp, điều này có thể không trực quan ngay từ cái nhìn đầu tiên. Điều đó không có nghĩa là nó không thể được thực hiện. Chúng ta chỉ cần đi sâu vào một số khái niệm nâng cao hơn mà Swift cung cấp cho chúng ta.
Hãy xem cách chúng ta có thể dễ dàng đưa các bài kiểm tra đơn vị vào mã Kết hợp của mình.
Hãy bắt đầu bằng cách xem trình quản lý mô phỏng xử lý đèn giao thông sau đây.
Từ bài viết Kết hợp ban đầu của chúng tôi, chúng tôi biết rằng bằng cách thêm trình bao bọc @Published, chúng tôi có được một Nhà xuất bản miễn phí mà chúng tôi có thể truy cập bằng cách sử dụng ký tự $.
thử nghiệm
Trước khi tìm hiểu cách thực sự kiểm tra mã Combine, hãy xem lại một số khái niệm cốt lõi liên quan đến kiểm tra đơn vị. Chúng ta có thể tóm tắt nó trong ba bước.
- Bước 1: Xác định những gì bạn muốn kiểm tra.
- Bước 2: Thực hiện thao tác bạn muốn kiểm tra với giá trị bạn đã xác định ở Bước 1.
- Bước 3: Đánh giá kết quả mà bạn nhận được từ Bước 2.
Đây là một ví dụ rất đơn giản để bạn có thể hiểu khái niệm này. Trước tiên, chúng tôi xác định giá trị kỳ vọng của mình cho bài kiểm tra, đèn đỏ. Sau đó, chúng tôi gọi một hoạt động thay đổi giá trị ánh sáng hiện tại thành màu đỏ. Và cuối cùng, chúng tôi đảm bảo rằng giá trị của ánh sáng hiện tại giống như giá trị dự kiến.
Điều này là tốt, nhưng chúng ta nên làm gì nếu muốn kiểm tra simulateFlow
chức năng? Bạn có thể nhận thấy rằng bên trong chức năng đó, chúng tôi đang thay đổi thuộc tính light ba lần. Vì vậy, khi kết thúc quá trình thực thi hàm, giá trị của thuộc tính sẽ thay đổi từ xanh lục sang vàng, từ vàng sang đỏ và cuối cùng từ đỏ sang xanh lục.
Như bạn có thể tưởng tượng, để kiểm tra chức năng, chúng ta cần đảm bảo rằng giá trị của thuộc tính, có giá trị đúng ở cuối, nhưng quan trọng nhất là chúng ta phải chắc chắn rằng tất cả giá trị thay đổi (từ giá trị này sang giá trị khác) đều đúng .
kỳ vọng
XCTestExpectations là một loại đối tượng mà Apple cung cấp cho chúng tôi để kiểm tra mã không đồng bộ. Về cơ bản, bạn tạo ra một kỳ vọng khi bắt đầu bài kiểm tra của mình và khi một số điều kiện nhất định được đáp ứng, bạn sẽ hoàn thành kỳ vọng đó. Quá trình thực thi của bài kiểm tra sẽ đợi cho đến khi kỳ vọng được đáp ứng hoặc khi hết thời gian chờ.
Vì vậy, để kiểm tra chức năng của chúng tôi, chúng tôi sẽ cần đợi cho đến khi chúng tôi thu thập tất cả các giá trị dự kiến mà chúng tôi biết rằng currentLight
thuộc tính sẽ thay đổi. Sau đó, chúng tôi sẽ đáp ứng mong đợi nếu chúng tôi có tất cả các giá trị. Nếu không, bài kiểm tra sẽ không thành công do hết thời gian chờ.
Với suy nghĩ này, giờ đây chúng ta có công cụ phù hợp để tạo một bài kiểm tra mới cho simulateFlow
chức năng của mình
Hãy phân tích mã:
Bước 1
- Chúng tôi tạo một kỳ vọng mới để sử dụng trong bài kiểm tra của mình.
- Chúng tôi đã xác định các giá trị dự kiến mà chúng tôi biết thuộc tính sẽ thay đổi tại một số điểm.
- Chúng tôi cũng đã tạo một danh sách trống mới mà chúng tôi sẽ sử dụng để lưu trữ các giá trị mà chúng tôi sẽ nhận được từ Nhà xuất bản.
- Chúng tôi bắt đầu lắng nghe các giá trị của Nhà xuất bản.
- Chúng tôi gọi hàm để chúng tôi bắt đầu nhận các thay đổi giá trị của thuộc tính.
- Chúng tôi chờ đợi kỳ vọng được đáp ứng hoặc hết thời gian chờ.
- Chúng tôi đánh giá xem các giá trị nhận được mà chúng tôi nhận được có chính xác hay không.
Việc kiểm tra mã Combine khá dễ dàng khi bạn hiểu tiềm năng của các kỳ vọng. Mặc dù chúng ta đã xem một ví dụ rất ngắn và đơn giản, nhưng bạn có thể sử dụng kỹ thuật tương tự này để thử nghiệm các giải pháp phức tạp hơn.
Chẳng hạn, bạn có thể áp dụng các nguyên tắc này để kiểm tra trạng thái của ViewModel trong kiến trúc MVVM hoặc để kiểm tra một số lệnh gọi mạng mô phỏng.
Bạn có thể muốn kiểm tra các bài viết trước của tôi về Combine.
Giới thiệu về Combine framework trong Swifthttps://blorenzop.medium.com/form-validation-with-combine-4988adcc3b0
Có bất kỳ câu hỏi? Vui lòng gửi cho tôi một tin nhắn . Nếu bạn thích nội dung của tôi, bạn có thể đăng ký trang Phương tiện của tôi để nhận thông báo trực tiếp trong hộp thư đến của bạn bất cứ khi nào tôi xuất bản một bài viết mới.
Nếu bạn muốn hỗ trợ tôi, bạn có thể theo dõi tôi trên GitHub hoặc Twitter .