2013-03-15 29 views
9

Ứng dụng Yii của tôi nhận được vùng phủ sóng phpunit trong bộ điều khiển, mô hình, thành phần, mô-đun nhưng không phải bất kỳ chế độ xem nào. Vấn đề là trình tải mã vùng phủ sóng trong phpunit bao gồm tệp xem trong khi chuẩn bị báo cáo bảo hiểm. Chế độ xem có biểu mẫu có các cuộc gọi $this->beginWidget gây ra sự cố do không có $ ngữ cảnh này.thử nghiệm yii phpunit với lượt xem trong phạm vi phủ sóng

Chế độ xem không thực sự có mã hoặc logic quan trọng nhưng chúng vẫn có một số điều kiện và thậm chí là các vòng để gọi renderPartial vì vậy sẽ rất tốt để có được mã xem cũng được đề cập đến.

Có giải pháp cho vấn đề này không?

+0

Câu hỏi hay! Tôi muốn nhấn mạnh nhiều hơn vào đơn vị và thử nghiệm chức năng trong các hướng dẫn khuôn khổ và sách chứ không phải là chức năng chuẩn hóa bản mẫu mà bạn có thể học trong 10 phút. – AndrewPK

Trả lời

4

Bạn đã thử mở rộng CWebTestCase chưa? Nói chung khi viết các bài kiểm tra đơn vị, bạn có đồ đạc và đồ vật để cung cấp dữ liệu cần thiết - nhưng với các bài kiểm tra về lượt xem và các bài kiểm tra 'chức năng', đối với ứng dụng web, thường dễ dàng bắt chước trình duyệt và thực hiện hành động trên ứng dụng web nếu người dùng thực sự đang sử dụng nó. Hiện tại, việc bắt chước này dễ dàng thực hiện nhất với Selenium (theo ý kiến ​​của tôi).

Hướng dẫn Yii trên Functional Testing là một nơi tốt để bắt đầu cũng như Selenium Documentation. Ngoài ra còn có this book mà đi qua sử dụng selen (Tôi không chắc chắn nếu phiên bản mới nhất nào, nhưng tôi biết phát hành trước đó với Publication Date: ngày 11 tháng 8 năm 2010), và Larry Ullman của Yii Book sẽ có các chương về thử nghiệm và sử dụng Selen trong các bài kiểm tra chức năng khi anh ấy hoàn thành chương đó.

Hy vọng điều này sẽ hữu ích!

Update để giải thích thêm CWebTestCase

CWebTestCase kéo dài PHPUnit_Extensions_SeleniumTestCase trực tiếp thực hiện một nền tảng thử nghiệm chức năng mà bạn có thể sử dụng trong vòng phpunit để kiểm tra xem, tạo kiểm tra phụ tùng bên trong quan điểm, khẳng định văn bản tồn tại, ' bấm vào 'trên liên kết, vv Những thử nghiệm này vẫn chạy từ dòng lệnh mặc dù họ yêu cầu máy chủ Selenium-RC được bắt đầu khi thử nghiệm đang chạy và họ yêu cầu một trình duyệt hợp lệ được cấu hình. Một trình duyệt hợp lệ có thể được cấu hình với mã ít nhất là sau đây được đặt bên trong setUp() chức năng:

$this->setBrowser('*firefox /usr/lib/firefox/firefox-bin'); 

Nói rằng mã số bảo hiểm không thể được cung cấp bởi CWebTestCase là không đúng sự thật, như CWebTestCase kéo dài PHPUnit_Extensions_SeleniumTestCase, cung cấp sau khi trích dẫn từ the documentation:

PHPUnit_Extensions_SeleniumTestCase có thể thu thập mã số bảo hiểm thông tin cho các bài kiểm tra chạy qua Selenium:

chép PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php vào thư mục gốc tài liệu của máy chủ web của bạn. Trong file cấu hình php.ini của máy chủ web của bạn, cấu hình

PHPUnit/Extensions/SeleniumTestCase/prepend.phpPHPUnit/Extensions/SeleniumTestCase/append.php

như auto_prepend_fileauto_append_file, tương ứng.Trong thử nghiệm của bạn lớp trường hợp kéo dài PHPUnit_Extensions_SeleniumTestCase, sử dụng

protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';

để cấu hình URL cho phpunit_coverage.php kịch bản.

+0

Thử nghiệm của tôi là mô hình kiểm tra dựa trên bảng điều khiển và hành động và thậm chí làm Xpath khẳng định về đầu ra html. Các báo cáo bảo hiểm mã trên quan điểm được thực hiện bởi phpunit là vấn đề. Selenium cũng không mã hóa các dòng php trong các khung nhìn. – thevikas

+0

Xin vui lòng xem tôi câu trả lời cập nhật dưới đây - Tôi tin rằng CWebTestCase cung cấp chính xác những gì bạn đang tìm kiếm do mở rộng của 'PHPUnit_Extensions_SeleniumTestCase'. Nếu không, tôi không hiểu câu hỏi của bạn đủ và tôi xin lỗi tôi không thể giúp đỡ nhiều hơn nữa. – AndrewPK

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