在为我的Laravel包编写测试时,我遇到了一些奇怪的事情。我的空测试通过了,而不是标记为"危险"。
进一步的研究使我找到了PendingCommand
类,它有一个run()
方法,该方法对命令的退出代码进行断言。这个PendingCommand
是通过调用$this->astisan('migrate:fresh')->run()
实例化的。通过在运行命令之前调用assertExitCode(null)
,我可以跳过这个断言。它起了作用,但仍有一种断言正在发生。
有人以前有这个问题,和/或能够在实际测试执行之前阻止断言发生吗?
很高兴看到有哪些断言,但我找不到。我唯一能找到的是,Assert
类保留了所有断言的$count
,而不是哪个断言。
我将继续寻找解决方案,并发布我对这个问题的调查结果。
发现InteractsWithConsole
有一个withoutMockingConsoleOutput
方法,该方法将阻止使用断言创建mock。
最终代码:
$this->withoutMockingConsoleOutput()
->artisan('migrate:fresh');