首页 > 解决方案 > 测试以断言选择输入中包含特定选项

问题描述

假设我有一个名为Dogs. 我想确保当用户访问主页时,他们可以从选择输入中选择其中一只狗。我将如何在 Laravel 中进行测试?这是我到目前为止所拥有的。

    public function a_user_can_select_a_dog()
    {
        $this->withoutExceptionHandling();

        $dogs = App\Dog::all();

        $names = $dogs->map(function ($dog) {
            return $dog->name;
        });

        $response = $this->get(route('home'))->assertSee($names);
    }

最终进入的assertSee是我所缺少的。或者也许assertSee()不是在这里使用的正确方法。我想确保当用户进入主页时,那里有一个选择输入,其中包含工厂创建的 5 个狗名。

标签: phplaraveltestingphpunit

解决方案


我猜你只是想做类似的事情,使用你刚刚创建的狗来确保它们的名字出现在主页上。

$response = $this->get(route('home'));

$dogs->each(function (Dog $dog) use($response) {
    $response->assertSee($dog->name);
});

更准确地说,您还可以通过调用来指定文本的顺序assertSeeInOrder(),这需要一个文本数组来查找。

$response->assertSeeInOrder($dogs->map(function (Dog $dog) {
    return "$dog->name";
})->all());

推荐阅读