साथ काम नहीं करते मैं creating
मॉडल इवेंट के साथ Laravel 4 में एक मॉडल साइड सत्यापन का निर्माण:Laravel 4 मॉडल घटनाक्रम PHPUnit
class User extends Eloquent {
public function isValid()
{
return Validator::make($this->toArray(), array('name' => 'required'))->passes();
}
public static function boot()
{
parent::boot();
static::creating(function($user)
{
echo "Hello";
if (!$user->isValid()) return false;
});
}
}
यह अच्छी तरह से काम करता है, लेकिन मैं PHPUnit के साथ समस्या है। दो निम्नलिखित परीक्षणों बिल्कुल एक जैसे हैं, लेकिन पहले एक पास juste:
class UserTest extends TestCase {
public function testSaveUserWithoutName()
{
$count = User::all()->count();
$user = new User;
$saving = $user->save();
assertFalse($saving); // pass
assertEquals($count, User::all()->count()); // pass
}
public function testSaveUserWithoutNameBis()
{
$count = User::all()->count();
$user = new User;
$saving = $user->save();
assertFalse($saving); // fail
assertEquals($count, User::all()->count()); // fail, the user is created
}
}
अगर मैं एक उपयोगकर्ता एक ही परीक्षा में दो बार बनाने का प्रयास करें, यह काम करता है, लेकिन यह करता है, तो बंधन घटना केवल में मौजूद है की तरह है मेरी टेस्ट क्लास का पहला टेस्ट। पहले परीक्षण निष्पादन के दौरान echo "Hello";
केवल एक बार मुद्रित किया जाता है।
मैं अपने प्रश्न के मामले को सरल बना देता हूं लेकिन आप समस्या देख सकते हैं: मैं विभिन्न यूनिट परीक्षणों में कई सत्यापन नियमों का परीक्षण नहीं कर सकता। मैं घंटों से लगभग हर चीज की कोशिश करता हूं लेकिन अब मैं खिड़कियों से बाहर निकलने के करीब हूं! कोई उपाय ?
पढ़ें https://github.com/laravel/ढांचे/मुद्दों/1181 – crynobone
धन्यवाद। अंत में, मॉडल घटनाक्रम आसानी से परीक्षण योग्य नहीं हैं। मैं उस चाल के साथ अपनी समस्या का समाधान करता हूं: मैं अपने 'setUp()' विधि में 'उपयोगकर्ता :: बूट() 'को कॉल करता हूं। –
मैं 'उपयोगकर्ता :: निरीक्षण (नया उपयोगकर्ता ऑब्सर्वर) 'का उपयोग करना पसंद करता हूं, इस तरह आप' UserObserver' का परीक्षण स्वयं कर सकते हैं। – crynobone