【问题标题】:Laravel testing migrating pollutes assertionsLaravel 测试迁移污染断言
【发布时间】:2020-06-13 08:37:03
【问题描述】:

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

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

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

很高兴看到正在做出哪些断言,但我找不到这个。我唯一能找到的是Assert 类保留了所有已完成断言的$count,而不是哪个。

我将继续寻找解决方案并将我的发现发布到这个问题。

【问题讨论】:

    标签: laravel testing phpunit assert


    【解决方案1】:

    发现InteractsWithConsole 有一个withoutMockingConsoleOutput 方法,该方法将阻止使用断言模拟to be created

    最终代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2017-04-12
      • 2020-02-01
      相关资源
      最近更新 更多