Mô phỏng kiểm tra đơn vị iOS bằng cách sử dụng Swifty Mocky
Swift được thiết kế để trở nên an toàn — hỗ trợ phản ánh chỉ đọc. Vì vậy, không có cách nào để sửa đổi chương trình của bạn trong thời gian chạy. Nhìn chung, nó tốt, mã được thực thi như mong đợi và các thành phần khác không thể thay đổi nó. Nhưng quay trở lại chủ đề của chúng ta, tất cả các khung mô phỏng đều được xây dựng dựa trên sự phản chiếu để có thể thay đổi các lớp, loại và đối tượng trong thời gian chạy.
Ngôn ngữ này cần các siêu anh hùng của nó để viết mã có thể kiểm tra được và chúng tôi biết rõ về họ — các giao thức và tiện ích mở rộng! Cho dù đó là cách triển khai nào — lớp, enum hoặc cấu trúc — mục đích của các giao thức vẫn là — để xác định các khái niệm trừu tượng và thêm chức năng mới cho các loại, ngay cả những chức năng mà chúng ta không nợ.
Những gì chúng ta có thể làm để chế giễu?
Sử dụng lập trình meta để tạo triển khai giả hoàn chỉnh.
Có nhiều thư viện thực hiện công việc mô phỏng cho thử nghiệm đơn vị, hầu hết các thư viện phổ biến là Cuckoo và swifyMocky .
Trong bài viết này, tôi sẽ cung cấp tổng quan về cách chúng ta có thể thực hiện việc mô phỏng bằng SwiftyMocky.
SwiftyMocky
https://github.com/MakeAWishFoundation/SwiftyMocky
Thuận lợi
- Tự động mô phỏng các giao thức Swift
- Hỗ trợ thuốc generic
- Thiết lập đơn giản và nhẹ
- tài liệu tốt
- Cú pháp đẹp và dễ dàng (sử dụng tính năng tự động hoàn thành)
- Đánh dấu các giao thức để chế nhạo
- Mọi giao thức trong thư mục nguồn, có chú thích này, sẽ được thêm vào Mock.generated.swift
- Tất cả các mô hình đều có phương thức đã cho (có thể truy cập cả dưới dạng phương thức thể hiện hoặc hàm toàn cục), với cú pháp dễ sử dụng, cho phép chỉ định giá trị trả về cho các phương thức đã cho (dựa trên các thuộc tính đã chỉ định)
- Tất cả các mô hình giả đều có phương thức xác minh (có thể truy cập cả dưới dạng phương thức mẫu hoặc hàm toàn cục), với cú pháp dễ sử dụng, cho phép xác minh xem một phương thức có được gọi trên mô hình hay không và bao nhiêu lần. Nó cũng cung cấp một cách thuận tiện để xác định xem các thuộc tính của phương thức có quan trọng hay không (và thuộc tính nào)
- Tất cả các mô hình đều có phương thức thực hiện (có thể truy cập cả dưới dạng phương thức thể hiện hoặc hàm toàn cục), với cú pháp dễ sử dụng, cho phép chỉ định bao đóng, phương thức này sẽ được thực thi khi phương thức gốc được gọi
Thành lập
- Cài đặt bằng Cocoapods
- Cài đặt CLI để tạo mô phỏng dễ dàng
> bác sĩ swiftymocky # xác thực thiết lập của bạn
> swiftymocky tạo # tạo giả
- Việc tạo Mocks dựa trên tệp Mockfile.yml với khả năng loại trừ các quy tắc xơ vải nhanh bằng cách sử dụng loại trừSwiftLintRules
Không có nhiều công cụ mà chúng tôi, với tư cách là nhà phát triển, có để chế giễu Swift, với một số ranh giới nghiêm ngặt do quyền truy cập thời gian chạy hạn chế về ngôn ngữ. Và ở đây chúng ta đi đến câu hỏi quan trọng - sử dụng hay không sử dụng các khuôn khổ bên ngoài để chế nhạo.
Chú Bob nổi tiếng không sử dụng chúng càng nhiều càng tốt; anh ấy nói: “Thời điểm mà bạn bắt đầu cần một khung mô phỏng chính là thời điểm mà tại đó mức độ liên kết giữa các bài kiểm tra và mã của bạn trở nên quá cao. Tuy nhiên, sau đó, Bạn nên cố gắng duy trì mức độ liên kết giữa mã của mình và các bài kiểm tra đủ thấp để bạn không cần phải sử dụng khung mô phỏng thường xuyên.”
Cảm ơn bạn đã đọc! Nếu bạn thích bài viết này, hãy vỗ tay để những người khác cũng có thể đọc nó :)
Mã vui vẻ :v: