Phpunit Laravel测试了一个通过vuejs填充下拉列表的表单


Phpunit Laravel testing a form where dropdown is populated via vuejs

我正在为一个表单编写一个小测试,运行phpunit时遇到错误。它卡住了,因为它在一个名为 organisation 的下拉框中看不到任何选项,该下拉框由 vuejs 填充。有问题的下拉列表填充了页面首次加载时加载的 json 值列表,并通过表单中的第一个下拉列表(即 academic_certificate )进一步过滤。

这是我的视图/刀片文件,带有下拉列表:

<select name="organisation" id="" class="form-control" {{-- required="required" --}} v-model="organisation">
    <option value="">Select</option>
    <option v-for="organisation in organisations | filterBy application_type in 'organisation_types'">
        @{{ organisation.name }}
    </option>
</select>

这是我的测试:

/** @test */
public function verified_user_can_create_academic_certificate_application()
{
    $faker = Faker::create();
    $user = factory(App'Models'User::class)->create();
    $applicant = Role::where('name', 'applicant')->firstOrFail();
    $user->roles()->attach($applicant->id);
    $this->actingAs($user)
        ->visit('/applicant/application/create')
        ->select('academic_certificate', 'application_type')
        ->type($faker->firstNameMale, 'first_names')
        ->type($faker->lastName, 'last_name')
         // fill out rest of form ...
        /****************************************
            here's where it gets an error!
        ****************************************/
        ->select('Some organisation', 'organisation')   
        ->select('1', 'qualification')
        ->type('IT', 'speciality')
        ->type('2002', 'year_of_award')
        ->press('Submit')
        ->see('complete');
}

运行测试时:

$ vendor/bin/phpunit
PHPUnit 4.8.23 by Sebastian Bergmann and contributors.
E.FF
Time: 7.15 seconds, Memory: 37.00Mb
There was 1 error:
1) ApplicationTest::verified_user_can_create_academic_certificate_application
InvalidArgumentException: Input "organisation" cannot take "Some organisation" as a value (possible values: ,
                                                {{ organisation.name }}
                                            ).
C:'wamp'www'attestation'vendor'symfony'dom-crawler'Field'ChoiceFormField.php:140
C:'wamp'www'attestation'vendor'symfony'dom-crawler'FormFieldRegistry.php:128
C:'wamp'www'attestation'vendor'symfony'dom-crawler'Form.php:77
C:'wamp'www'attestation'vendor'laravel'framework'src'Illuminate'Foundation'Testing'Concerns'InteractsWithPages.php:808
C:'wamp'www'attestation'vendor'laravel'framework'src'Illuminate'Foundation'Testing'Concerns'InteractsWithPages.php:788
C:'wamp'www'attestation'vendor'laravel'framework'src'Illuminate'Foundation'Testing'Concerns'InteractsWithPages.php:775
C:'wamp'www'attestation'tests'acceptance'applicant'ApplicationTest.php:55

任何帮助将不胜感激,我正在努力掌握测试,不想被困在这里!谢谢。

编辑

我意识到我在标记中缺少值属性:

<select name="organisation" id="" class="form-control" {{-- required="required" --}} v-model="organisation">
    <option value="">Select</option>
    <option 
        v-for="organisation in organisations | filterBy application_type in 'organisation_types'" 
        value="@{{ organisation.id }}"
    >
        @{{ organisation.name }}
    </option>
</select>

我现在添加了它,但同样的问题仍然存在。

开头

<option value="">Select</option>行代码值为空。我遇到了几乎完全相同的问题。给你的值一个值,它可能会解决它。