如何为这种情况编写一个好的测试单元/功能测试

时间:2018-05-25 17:22:55

标签: php laravel selenium testing laravel-dusk

这个主题更多的是关于这个想法,而不是提供准备好的代码。

我目前正在为一个应用程序制作Dusk(在Laravel中实施的Selenium)测试。我有返回的功能:

  

搜索喜欢蓝色的用户。

它当然有点复杂(关系,许多模型等)。 我现在写了两个测试。

  • 搜索喜欢颜色 abc 的用户。只有我的测试用户喜欢它,所以我知道应该得到什么结果。我正在进行db query和int。

  • 之间的比较
  • 在数据库中搜索喜欢颜色(从可用颜色中随机)的用户。它与之前使用真实颜色名称的逻辑相同。

我认为这不好,因为我从来不知道应该从数据库中得到什么结果。对于大量用户来说,手动检查数据库很困难。

我正在询问一些想法,我应该测试一下,以确保功能返回正确的结果。

1 个答案:

答案 0 :(得分:0)

对我来说,最好的方法是在每次测试之前拥有一个干净的数据库。然后,您可以添加特定测试所需的数据。

所以你的测试应该是这样的:

class SearchUserTest extends TestCase
{
    // Refresh migrations before each test
    use RefreshDatabase;

    public function testCanFindUsersThatLikeSomeColor()
    {
        // Arrange
        // Create $user1 who likes color blue
        // Create $user2 who likes color green
        // Create $user3 who doesn't like any color

        // Act
        // Make your search request to find users who like color blue

        // Assert
        // Assert response has $user1 and doesn't have $user2 and $user3

    }

}