如何将Behat路径从Public文件夹更改为不同的文件夹名称

时间:2015-11-16 13:18:31

标签: laravel behat

我在测试我继承的Laravel应用时遇到了问题。

通常标记为" public" 的文件夹已重命名为" html"

应用程序本身运行正常,但当运行Behat测试时,仍然会查找公用文件夹。我只是复制" html" 正在努力它文件并将其重命名为公共,但我想解决此问题,以便我可以让其他一些同事测试此应用。

我已经查看了Behat文档,但无法找到它。我也搜索了相当多的内容,但没有找到解决它的任何内容。

任何人都知道如何设置此路径,而不是寻找名为" public"我可以更改它以查找名为" html。"

的文件夹

我得到的确切错误是

Warning: file_get_contents(/Library/WebServer/Documents/myApp/myApp/public/build/rev-manifest.json): failed to open stream: No such file or directory in /Library/WebServer/Documents/thirdspace-app/thirdspace/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php line 668

上述路径中的公开需要 html

该错误中引用的代码如下所示

 if ( ! function_exists('elixir'))
{

  function elixir($file)
  {
      static $manifest = null;

      if (is_null($manifest))
      {
          $manifest = json_decode(file_get_contents(public_path().'/build/rev-manifest.json'), true);
      }

      if (isset($manifest[$file]))
      {
            return '/build/'.$manifest[$file];
      }

      throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
  }
}

我真的不想改变它,因为我认为这会影响应用程序本身。我只是想发送测试寻找HTML而不是公开。我真的只是想确保解决方案只影响测试,而不是应用程序本身。

2 个答案:

答案 0 :(得分:1)

这使用Laravel辅助函数public_path(),它总是返回一个期望名为public的目录的路径。

有几种不同的方法可以覆盖它,但这可能是最简单的方法。为了在Behat之前运行,请在bootstrap/app.php

中定义
$app->bind('path.public', function() {
    return base_path().'/html';
});

答案 1 :(得分:0)

我不知道Laravel如何使用behat测试,所以这是一个相当通用的答案。我不知道为什么behat测试将依赖于该文件夹,而不是寻找存储在那里的静态内容(例如上传)。也许你可以添加一个失败的behat测试的示例输出?我认为最有可能包含路径的两个选项是:

  • 如果在您的某个情境中指定了它,您应该看看那里。它们通常放在features/的子文件夹中,其中包含所有要素文件。
  • 否则Behat是通过项目根目录中的behat.yml配置的。您可能需要查看其中定义的pathscontexts(或更确切地说是其参数)。