1. 直接下指令 phpunit
2. 搭配 Laravel-Elixir 執行 gulp tdd 或 gulp watch
遇雷環境一 (執行 phpunit):
- Windows 10
- Node.js 5.11.0
- Laravel 5.2.32
- PHPUnit 5.3.4
在此雖然是顯示 PHPUnit 4.8.26 (此為在 Laravel 裝的 PHPUnit 版本, 而本機上為 5.3.4)
卻會出現 PHP Fatal error, 產生 Exception
解決方法一:
將本機上的 phpunit 降版至 4.8.26
移除全域的 phpunit 版本
composer global remove phpunit/phpunit
安裝全域特定版本的 phpunit
composer global require "phpunit/phpunit=4.8.26"
再跑一次, 可以正確執行測試
遇雷環境二 (執行 gulp tdd):
- Windows 10
- Node.js 5.11.0
- Laravel 5.2.32
- PHPUnit 4.8.26
不管它顯示了什麼訊息, 這裡肯定是有問題的
查了 GitHub 上的 issue: Wrong path for phpUnit on Windows #518, 是與路徑格式有關
解決方法二:
目前已經有丟了一個 Pull Request: Gulp PhpUnit Fix for Windows #519 的解決方案
修改專案中 node_modules/laravel-elixir/tasks/phpunit.js 檔案
修改後的檔案如下 (綠底為變更行)
var gulp = require('gulp');
var Elixir = require('laravel-elixir');
var config = Elixir.config;
var runTests = require('./shared/Tests.js');
var path = require('path');
/*
|----------------------------------------------------------------
| PHPUnit Testing
|----------------------------------------------------------------
|
| This task will trigger your entire PHPUnit test suite and it
| will show notifications indicating the success or failure
| of that test suite. It works great with your tdd task.
|
*/
Elixir.extend('phpUnit', function(src, command) {
runTests(
'PHPUnit',
src || (config.testing.phpUnit.path + '/**/*Test.php'),
command || (path.normalize('vendor/bin/phpunit') + ' --verbose')
);
});
再看執行結果, 成功!!!
[2016/5/27] 更新筆記:
可以直接在 gulpfile.js 變更設定
var path = require('path');
mix.phpUnit([] , path.normalize('vendor/bin/phpunit') + ' --verbose');
[2016/06/03] 更新筆記:
Node.js 升級至 6.2.1 版本後, 再重新開新專案 Laravel 5.2.35 + Elixir 5.0 未再出現路徑問題
但 PHPUnit 的版本仍然維持適用在 v4.8.26
沒有留言:
張貼留言