Laravel测试迁移会污染断言



在为我的Laravel包编写测试时,我遇到了一些奇怪的事情。我的空测试通过了,而不是标记为"危险"。

进一步的研究使我找到了PendingCommand类,它有一个run()方法,该方法对命令的退出代码进行断言。这个PendingCommand是通过调用$this->astisan('migrate:fresh')->run()实例化的。通过在运行命令之前调用assertExitCode(null),我可以跳过这个断言。它起了作用,但仍有一种断言正在发生。

有人以前有这个问题,和/或能够在实际测试执行之前阻止断言发生吗?

很高兴看到有哪些断言,但我找不到。我唯一能找到的是,Assert类保留了所有断言的$count,而不是哪个断言。

我将继续寻找解决方案,并发布我对这个问题的调查结果。

发现InteractsWithConsole有一个withoutMockingConsoleOutput方法,该方法将阻止使用断言创建mock。

最终代码:

$this->withoutMockingConsoleOutput()
->artisan('migrate:fresh');

最新更新