2016-11-17 13 views
5

मैं एक शॉपिंग कार्ट के लिए एक टेस्ट क्लास लिखने की कोशिश कर रहा हूं।लैरवेल यूनिट परीक्षण निर्भरता इंजेक्शन

ShoppingCartTest.php

class ShoppingCartTest extends TestCase { 

    use DatabaseTransactions; 

    protected $shoppingCart; 

    public function __construct() { 
     $this->shoppingCart = resolve('App\Classes\Billing\ShoppingCart'); 
    } 

    /** @test */ 
    public function a_product_can_be_added_to_and_retrieved_from_the_shopping_cart() { 

     // just a placeholder at the moment 
     $this->assertTrue(true); 
    } 

} 

हालांकि, जब मैं PHPUnit चलाने के लिए, ऐसा लगता है Laravel की तरह मेरे ShoppingCartClass हल करने में असमर्थ है: यहाँ मैं क्या है।

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' 
with message 'Unresolvable dependency resolving 
[Parameter #0 [ <required> $app ]] in class Illuminate\Support\Manager' 
in C:\Development Server\EasyPHP-Devserver-16.1\eds-www\nrponline\vendor\laravel\framework\src\Illuminate\Container\Container.php:850 

मैं है मेरी ShoppingCart वर्ग अलग नियंत्रकों ठीक की एक संख्या में हल किया जा रहा:

यहाँ त्रुटि है।

लार्वेल मेरे परीक्षणों के दौरान इसे क्यों हल नहीं कर सकता?

मैंने this post पर भी पेशकश की लेकिन अभी भी कोई भाग्य नहीं है।

+0

क्या आप 'ऐप \ क्लासेस \ बिलिंग \ शॉपिंग कार्ट 'के लिए कन्स्ट्रक्टर पोस्ट कर सकते हैं? – edcs

+0

@edcs निश्चित बात। यहां कक्षा है। http://pastebin.com/bPRpmtnH –

+2

कूल - धन्यवाद! आप '$ this-> ऐप-> मेक ('ऐप \ क्लासेस \ बिलिंग \ शॉपिंगकार्ट') का उपयोग करने का प्रयास कर सकते हैं; क्योंकि सभी लैरावेल परीक्षणों में संपत्ति के रूप में उनके लिए उपलब्ध एप्लिकेशन का एक उदाहरण है। – edcs

उत्तर

8

मैंने इसे समझ लिया। यहां अद्यतन कक्षा है।

class ShoppingCartTest extends TestCase { 

    use DatabaseTransactions; 

    protected $shoppingCart; 

    public function setUp() { 

     parent::setUp(); 

     $this->shoppingCart = $this->app->make('App\Classes\Billing\ShoppingCart'); 
    } 

    /** @test */ 
    public function a_product_can_be_added_to_and_retrieved_from_the_shopping_cart() { 

     // just a placeholder at the moment 
     $this->assertTrue(true); 
    } 

} 

सही दिशा में मार्गदर्शन करने के लिए @edcs पर धन्यवाद। आपको एक सेटअप फ़ंक्शन का उपयोग करने की आवश्यकता है और __construct नहीं है क्योंकि app उदाहरण अभी तक नहीं बनाया गया है।

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