2016-11-28 27 views
5

Tôi sử dụng Laravel 5.3.22 và muốn đơn vị kiểm tra ứng dụng của tôi bằng cách sử dụng cơ sở dữ liệu trong bộ nhớ sqlite di chuyển/quay lại cho mọi thử nghiệm như đã nói here. Đây là phần kết nối cấu hình database.php tôi:Laravel bỏ qua kết nối cơ sở dữ liệu thử nghiệm

'mysql' => [ 
      'driver' => 'mysql', 
      'host'  => env('DB_HOST', 'localhost'), 
      'database' => env('DB_DATABASE', 'forge'), 
      'username' => env('DB_USERNAME', 'forge'), 
      'password' => env('DB_PASSWORD', ''), 
      ... 
     ], 

     'testing' => [ 
      'driver' => 'sqlite', 
      'database' => ':memory:', 
      'prefix' => '', 
     ], 

Đây là cấu hình phpunit env:

<php> 
    <env name="APP_ENV" value="testing"/> 
    <env name="CACHE_DRIVER" value="array"/> 
    <env name="SESSION_DRIVER" value="array"/> 
    <env name="QUEUE_DRIVER" value="sync"/> 
    <env name="DB_CONNECTION" value="testing"/> 
</php> 

Các cấu hình phpunit ngụ ý rằng laravel shoud sử dụng "kiểm tra" kết nối sql để thử nghiệm, nhưng nó không quan tâm và tiếp tục với kết nối mysql chính. Đây không phải là một tùy chọn, tôi có một lược đồ lớn và phức tạp và nó không thể được sử dụng để kiểm tra đơn vị với mysql. Làm cách nào để tiếp tục? Tôi không thể giả lập trình tạo truy vấn vì tôi cần khẳng định kết quả của nó.

Trả lời

2

Tôi đã tìm ra vấn đề, tôi đã sử dụng cấu hình bộ nhớ đệm trong môi trường cục bộ của mình và ngăn cản Laravel sử dụng cấu hình phpunit. cấu hình: lệnh thủ công rõ ràng đã được trợ giúp. Tôi cũng đã thay đổi trình điều khiển bộ nhớ cache tệp thành mảng một cho env cục bộ của tôi.

+0

cảm ơn bạn rất nhiều..chỉ giúp tôi tiết kiệm thời gian –

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