我正在使用codeception爲laravel應用運行驗收測試。我遇到的一個問題是,當登錄頁面被緩存時,我的登錄測試開始失敗,我猜,我正在自動登錄。我認爲這種情況是因爲我的測試在清除緩存時開始再次傳遞,並且一般都會在沒有更改測試或應用程序代碼的情況下開始失敗。在codeception測試之前清除laravel 4應用的緩存
這裏是有問題的登錄測試,現在提取到一個輔助方法
public function login($username, $password, $I) {
$I->amOnPage('users/login');
$I->fillField('email', $username);
$I->fillField('password', $password);
$I->click('Login');
$I->amOnPage('admin/');
$I->see('Welcome');
}
我一直在定期清理緩存每當試驗失敗,但它變得乏味。我希望能夠註冊一個幫助程序來爲我清除緩存,並在我所有的測試中調用該函數。我提取的功能爲幫助在AcceptanceHelper.php建議here具有以下功能:
public function clearCache($I) {
$cache = $this->getModule('Cache');
$cache->flush();
}
這似乎是由文檔here建議什麼,但我得到的錯誤「模塊緩存不能連接的」。它看起來像我所需要的Laravel4模塊,所以我補充說,我acceptance.suite.yml文件,但沒有運氣任我收到此錯誤:
SQLSTATE[28000] [1045] Access denied for user 'stephen'@'localhost' (using password: NO)
我想我需要在配置文件中授權的MySQL ,但這似乎也不起作用。這是我的acceptance.suite.yml文件:
class_name: AcceptanceTester
modules:
enabled:
- PhpBrowser
- AcceptanceHelper
- Laravel4
config:
PhpBrowser:
url: 'http://104.131.29.69:8000/'
Laravel4:
user: 'root'
password: 'pAsSwOrD'
最後我讀this答案,似乎,好像我不應該有實際的配置文件和我的助手功能應該看起來更像,這包括Laravel4:
public function clearCache($I) {
$L = $I->getLaravel4();
Cache::flush();
}
但我只是風得到這個錯誤,而不是:
Class 'Codeception\Module\Cache' not found
所以我卡住了。謝謝!
您還可以使用模塊調用文件系統:http://codeception.com/docs/modules/Filesystem 只啓用它在你的acceptance.suite.yml文件: '模塊:啓用: - Cli' 然後你可以在你的測試中寫下如下代碼: '$ I-> cleanDir('app/storage/cache');'' – 2015-08-03 11:00:33