vendredi 26 février 2016

Test case not executing, Call to a member function filter() on a non-object

I am writing PHP Laravel 5 unit test to check my form submission is happening properly. Below is my form. (Form attach an image file too)

<form action="upload_question123" method="post" id="story_upload_form" enctype="multipart/form-data" class="form-horizontal">

                                @if(isset($edit_Q_Status))
                                    <div id="great" class="form-group">
                                    <div class="col-sm-3 col-md-3 col-lg-2"></div>

                                    <div class=" col-sm-3 col-md-3 col-lg-5 alert alert-success alert-block">
                                        <a class="close" data-dismiss="alert" href="#">×</a>
                                        <h4 class="alert-heading">Success!</h4>
                                        {{ $edit_Q_Status }}
                                    </div>                                      
                                    </div>
                                @endif

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Subject</label>
                                <div class="col-sm-3 col-md-3 col-lg-2">
                                    <select name="subject">
                                        @foreach($sub as $rowSub)
                                        <option value=<?php echo '"'.$rowSub->id.'" '; ?> >{{ $rowSub->subject }}</option>
                                        @endforeach 

                                    </select>
                                </div>

                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Age category</label>
                                <div class="col-sm-3 col-md-3 col-lg-2">
                                    <select name="ageCategory">
                                        @foreach($agecat as $rowAge)
                                        <option value=<?php echo '"'.$rowAge->id.'" '; ?>>{{ $rowAge->agefrom }} - {{ $rowAge->ageto }}</option>
                                        @endforeach 

                                    </select>
                                </div>
                            </div>

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Question</label>
                                <div class="col-sm-3 col-md-3 col-lg-8">
                                    <textarea name="question" id="question" class="col-sm-3 col-md-3 col-lg-10" placeholder="Enter the question here"></textarea>
                                </div>

                                <div   class="col-sm-3 col-md-3 col-lg-2"></div>

                            </div>

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Select Image</label>
                                <div class="col-sm-3 col-md-3 col-lg-2">
                                    <input type="file" name="file[]" id="file" required="yes"/>
                                </div>

                                <div class="col-sm-3 col-md-3 col-lg-2"></div>
                                <div class="col-sm-3 col-md-3 col-lg-2">

                                    <input type="button" id="add_more" class="upload" value="Add More Files"/>

                                </div>
                            </div>

                            <div id="before_this" class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Answer 1</label>
                                <div class="col-sm-3 col-md-3 col-lg-4">
                                    <textarea class="col-sm-3 col-md-3 col-lg-12" id="ans1" name="ans1"></textarea>
                                </div>
                            </div>

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Answer 2</label>
                                <div class="col-sm-3 col-md-3 col-lg-4">
                                    <textarea class="col-sm-3 col-md-3 col-lg-12" id="ans2" name="ans2"></textarea>
                                </div>
                            </div>

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Answer 3</label>
                                <div class="col-sm-3 col-md-3 col-lg-4">
                                    <textarea class="col-sm-3 col-md-3 col-lg-12" id="ans3" name="ans3"></textarea>
                                </div>
                            </div>

                            <div class="form-group">
                                <label class="col-sm-3 col-md-3 col-lg-2 control-label">Answer 4</label>
                                <div class="col-sm-3 col-md-3 col-lg-4">
                                    <textarea class="col-sm-3 col-md-3 col-lg-12" id="ans4" name="ans4"></textarea>
                                </div>

                            </div>


                            <div  class="form-group">
                                <div class="col-sm-3 col-md-3 col-lg-2"></div>
                                <div class="col-sm-3 col-md-3 col-lg-2"></div>

                                <div class="col-sm-3 col-md-3 col-lg-2"></div>
                                <div class="col-sm-3 col-md-3 col-lg-2">
                                    <a href="#" 
                                    onclick="javascript:submitOfQuestion();"
                                    data-toggle="dropdown"
                                    class="btn btn-primary dropdown-toggle"><i
                                    class="fa fa-upload icon-white"></i> Upload </a>

                                </div>
                            </div>
                    </div>
</form>

And I wrote the below test method.

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


    $this->select('Computer', 'subject')
        ->select('7 - 10', 'ageCategory')
        ->type('Test Case Test Question 1', 'question')
        ->attach('C:\xampp\htdocs\IntelliKid\public\test_resources\Capture2.JPG', 'file[]')
        ->type('Test Case Test Answer 1', 'ans1')
        ->type('Test Case Test Answer 2', 'ans2')
        ->type('Test Case Test Answer 3', 'ans3')
        ->type('Test Case Test Answer 4', 'ans4')
        ->press('Upload')
        ->see('Success!');

}

But I get the following error and I have no idea where it is going wrong.

PHPUnit 4.8.21 by Sebastian Bergmann and contributors.

.....
Fatal error: Call to a member function filter() on a non-object in C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Foundation\Testing\Concerns\InteractsWithPages.php on line 793

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.' in C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Container\Container.php:752
Stack trace:
#0 C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Container\Container.php(633): Illuminate\Container\Container->build('Illuminate\\Cont...', Array)
#1 C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(674): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
#2 C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(154): Illuminate\Foundation\Application->make('Illuminate\\Cont...')
#3 C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(79): Illuminate\Foundation\Bootstrap\HandleExceptions->getExceptionHandler()
#4 C:\xampp\htdocs\IntelliKid\vendor\ in C:\xampp\htdocs\IntelliKid\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 752

Aucun commentaire:

Enregistrer un commentaire