测试以断言选择输入具有特定选项

ran*_*its 6 php testing phpunit laravel

假设我有一个名为 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

mrh*_*rhn 2

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

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

$dogs->each(function (Dog $dog) use($response) {
    $response->assertSee($dog->name);
});
Run Code Online (Sandbox Code Playgroud)

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

$response->assertSeeInOrder($dogs->map(function (Dog $dog) {
    return "$dog->name";
})->all());
Run Code Online (Sandbox Code Playgroud)