【问题标题】:Run a specific unit test in Laravel before al other unit tests (phpunit)在其他单元测试(phpunit)之前在 Laravel 中运行特定的单元测试
【发布时间】:2018-06-19 17:10:54
【问题描述】:

我正忙于学习在 Laravel 中进行单元测试,我有一个问题。 我希望在运行其他所有其他测试之前先运行一个与身份验证有关的测试。这可以实现吗?

到目前为止,我有 4 个测试类和一些方法。

【问题讨论】:

  • 在 PHPUnit 中,每一个测试都是在一个全新的环境中运行的,所有的设置和拆除都是为每一个测试完成的,所以顺序无关紧要。如果您尝试将身份验证作为其他测试的一部分,例如您正在测试您的 API,并且您需要您的测试以用户身份进行身份验证,Laravel 的测试工具有方法和助手可以让您做到这一点。您能否为您的问题提供更多背景信息?如果我知道您想要达到的目标,我可能会为您提供更好的帮助
  • 我有一些方法只有在正确设置数据库/身份验证时才能工作,有时由于我的工作环境测试数据已经消失,所以我想签入一个测试(在所有之前其他测试)测试数据在那里。否则我所有的测试都会失败
  • 您需要做的是在测试用例的setUp 方法中完成所有设置,该方法在每个测试运行之前执行。同样,tearDown 方法会在您的每一项测试完成后运行。或者,您可以创建一个方法来完成所有设置并在每个测试开始时调用它。
  • 您的评论是一个答案,如果您将其发布为答案,我会接受它:-)
  • 你去 :)

标签: laravel testing phpunit


【解决方案1】:

在 PHPUnit 中,每一个测试都是在一个全新的环境中运行的,所有的设置和拆卸都是为每一个测试完成的,所以顺序无关紧要。如果您尝试将身份验证作为其他测试的一部分,例如您正在测试您的 API,并且您需要您的测试以用户身份进行身份验证,Laravel 的测试工具有方法和助手可以让您做到这一点。

您需要在测试用例的setUp 方法中完成所有设置。该方法在每个测试运行之前执行。同样,tearDown 方法会在您的每一项测试完成后运行:

public class YourTest extends TestCase
{
    protected function setUp()
    {
        // Do your setup here
    }

    protected function tearDown()
    {
        // Your cleanup here, if you're using Mockery, this 
        // is a good place to call Mockery::close();
    }

    public function testSomething()
    {
        // Your test code, you can assume that setUp has 
        // already run and you're ready to go.
    }
}

或者,您可以创建一个方法来完成所有设置并在每个测试开始时调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2010-11-25
    • 1970-01-01
    • 2012-11-28
    • 2013-09-13
    相关资源
    最近更新 更多