【问题标题】:Laravel 5 Unittest call Method OrderLaravel 5 Unittest 调用方法顺序
【发布时间】:2016-05-17 14:04:39
【问题描述】:

Laravel 5 在单个类中调用测试用例的顺序是什么?

他们是从上到下调用​​的吗?按字母顺序?我可以指定顺序吗?

意思是,我想从以下位置开始测试 API 调用: POST(创建订单), GET(读取新创建的订单), DELETE(删除该订单)。如果我可以将其作为 3 个单独的自动测试来完成,那就太好了,但我不知道它们是否会始终按照特定顺序执行。

【问题讨论】:

标签: php unit-testing laravel laravel-5 phpunit


【解决方案1】:

您不应该按照测试的顺序进行中继,而是执行以下操作:

  1. 发出 POST 请求并断言帖子已创建。
  2. 手动创建订单,然后发出 GET 请求并断言已找到订单
  3. 手动创建订单,然后发出 DELETE 请求并断言订单已被删除。

数据不应在测试之间保留,请使用Illuminate\Foundation\Testing\DatabaseTransactionsIlluminate\Foundation\Testing\DatabaseMigrations

查看更多信息:https://laravel.com/docs/5.2/testing#resetting-the-database-after-each-test

【讨论】:

  • 我已经做了类似的事情:public function testOrder() { $clientOrderId = $this->order(); $this->assertInternalType('string', $clientOrderId); $this->assertNotEmpty($clientOrderId); $this->OrderStatus($clientOrderId); $this->DeleteOrder($clientOrderId); } 但我希望能够单独运行它们,而无需进行新的测试。
【解决方案2】:

您可以使用@depends 注释来确保一个测试一个接一个地运行,但正如@scrubmx 指出的那样,您的测试不应该按照执行顺序进行中继。否则,如果您的 createOrder 测试失败,则不会执行其余的测试。如果数据是由另一个测试用例隐式创建的,而不是在对其进行操作的测试用例中显式创建,那么维护不断增长的测试套件也变得更加困难,因为您将拥有越来越多的数据变体来进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2016-06-05
    • 2014-03-21
    • 2012-02-18
    相关资源
    最近更新 更多