Tôi vẫn đang làm bài kiểm tra đơn vị PHP để kiểm tra các bộ điều khiển symfony2 của mình. Các lớp thử nghiệm của tôi là các dẫn xuất của WebTestCase và các thử nghiệm đang thực hiện các yêu cầu GET hoặc POST để kiểm tra xem mọi thứ có hoạt động tốt hay không. Tôi muốn kiểm tra tất cả các lớp cơ bản, nhưng tôi không muốn làm hỏng cơ sở dữ liệu của mình bằng các thử nghiệm. Tôi không muốn sử dụng các giả lập, nhưng một db SQLite trong bộ nhớ, nơi tôi có thể thiết lập một kịch bản thử nghiệm để kiểm tra tất cả các sửa đổi. Tôi tìm thấy rất nhiều gợi ý về cách thực hiện điều này với học thuyết 1.x, nhưng chúng không hoạt động nữa. Vì vậy, tôi muốn một cái gì đó như thế này:Symfony/Doctrine UnitTests với bộ nhớ SQLite DB
class BlahblahTest extends WebTestCase {
public function testXXXYYY() {
// 1. Setup a new database with SQLite:memory:
// 2. create the database and all tables according the entities in my project
$this->createTestScenario(); // 3.
$crawler = $this->client->request('GET', '/testpage'); // 4.
// 5. Lots of checks against the database and/or the $crawler data
}
}
Bất kỳ cơ hội nào để có được tác phẩm này?
Cảm ơn trước Hennes
Xin chào, Melvin. Trước hết, có, điều này sẽ làm việc. Nhưng thay đổi mã soure nó không phải là cách ưa thích của tôi, bởi vì các xét nghiệm này nên chạy tự động trên một máy chủ chuyên dụng. Vì vậy, kết nối mặc định không được thao tác, nhưng sẽ không có kết nối thứ hai nữa. Các thử nghiệm của nó sẽ thay đổi kết nối mặc định của chúng theo lập trình. Phải có cách để làm điều này. Hennes. – Hennes
Không chắc chắn nếu bạn hiểu vì vậy đây có thể là một nhận xét ngu ngốc. Nhưng khi bạn chạy unittests symfony nên sử dụng env test. Ví dụ của tôi cho ví dụ chạy hoàn hảo trên máy chủ và sản xuất jenkins vì cấu hình chỉ thay đổi khi env thử được đặt config_test.yml được nạp như một ghi đè cho config.yml để cấu hình của bạn cho sản xuất sẽ không thay đổi. – melvin
Ah, lỗi của tôi, xin lỗi. Tôi không biết, kiểm tra đơn vị đó tự động chọn môi trường kiểm tra. Vì vậy, tôi đã thực hiện trình điều khiển sqlite của tôi trong config_test.yml như bạn đã đề cập. Hoạt động tốt. Cảm ơn bạn. – Hennes