5

मैं लैरवेल 5.0 में एक यूनिट टेस्ट लिख रहा हूं और मेरे अनुरोध वर्ग में मैं सत्यापन त्रुटि संदेशों को दिखाने के लिए एक अलग बैग का उपयोग कर रहा हूं।लार्वाल 5.0 + यूनिट टेस्ट - assertSessionHasErrors विभिन्न बैग

मैं अपने फ़ाइल में इस का उपयोग कर रहा:

/* ExampleTest.php */ 
class ExampleTest extends TestCase { 
    public function testPostWithoutData(){ 
     $response = $this->call('POST', 'url/to/post',[ 
      'my_field' => '' 
     ]); 
     $this->assertSessionHasErrors('my_field'); 
    } 
} 

अगर मैं परीक्षण चलाने के लिए, यह ठीक नहीं प्राप्त कर सकते हैं:

/* ExampleRequest.php */ 
namespace App\Http\Requests; 

use App\Http\Requests\Request; 
use Illuminate\Support\Facades\Auth; 

class ExampleRequest extends Request { 

    protected $errorBag = 'otherbag'; 

    public function rules(){ 
     return [ 
      'my_field' => 'required' 
     ]; 
    } 
} 

अपने परीक्षण फ़ाइल में, मैं इस का उपयोग कर परीक्षण कर रहा हूँ जोर और इस समस्या को लौट:

Session missing error: my_field Failed asserting that false is true .

अगर मैं अनुरोध फ़ाइल से $errorBag विशेषता बाहर ले, मुझे कोई राशि समस्या का।

मैं आवश्यकतानुसार अधिक विवरण दे सकता हूं।

+0

क्या आप समझा सकते हैं कि आपने अपनी ऑब्जेक्ट में 'त्रुटि $ त्रुटिबैग =' अन्यबैग 'क्यों सुरक्षित की है? यह क्या करता है और क्यों? –

+0

क्योंकि मेरे पास इरॉस दिखाने के लिए दो स्थान हैं मेरे विचार ... और मैं इसे विभिन्न बैग के साथ संभालता हूं .... – giordanolima

उत्तर

2

आप इस तरह सत्र की दुकान से एक वैकल्पिक बैग प्राप्त कर सकते हैं:

$myBag = $this->app('session_store')->getBag('otherBag'); 
$this->assertTrue($myBag->any()); 

हालांकि, Laravel डिफ़ॉल्ट रूप से एक वैकल्पिक बैग का उपयोग नहीं करता, तो मैं आप के लिए अपने कोड में कुछ कर रहे संभालने कर रहा हूँ सत्र हैंडलर के साथ अपना App\Request::$errorBag पंजीकृत करें।

0

मैं अगर आप अपने सत्र कहीं और तय कर रहे हैं पता नहीं है, लेकिन मुझे लगता है कि आप की तरह कुछ कर सकते हैं: इससे पहले कि आप सत्र में कुछ जोर कर सकते हैं

$this->session(['foo' => 'bar']);

See testing helpers section for Laravel 5.0

संबंधित मुद्दे