0

我遇到了 Laravel 4 测试问题:动作/路由测试只能运行一次,并且必须是第一次测试运行。在调用断言之前,任何后续操作/路由测试都将失败并出现异常。

  • 只要路线/动作测试是第一次测试运行,它们就会运行。
  • 非路由/动作测试正常运行,尽管它们会导致后续路由/动作测试抛出异常

请务必注意,相关测试不会失败,它们会在触发操作时引发异常,例如:

Symfony\Component\Routing\Exception\RouteNotFoundException: Unable to generate a URL for the named route "home" as such route does not exist.

示例测试类:

class ExampleTest extends TestCase {

// passes
public function testOne()
{
    $class = MyApp::ApiResponse();
    $this->assertInstanceOf('\MyApp\Services\ApiResponse', $class);
}

// this fails unless moved the top of the file
public function testRoute()
{
    $this->route('GET','home');
    $this->assertTrue($this->client->getResponse()->isOk());
}

// passes
public function testTwo()
{
    $class = MyApp::ProjectService();
    $this->assertInstanceOf('\MyApp\Services\ProjectService', $class);
}

}

这是特定于实现的,一个新的 Laravel 4 项目没有出现这个问题。什么可能导致这种行为?您将如何追踪问题?

4

1 回答 1

1

在这种情况下,使用 include_once 调用来调用路由文件。运行后续测试时,路由是空的。

更改为 include() 修复了问题中显示的问题

于 2013-08-03T11:39:34.657 回答