我正在尝试首次在Ubuntu 12.04上运行givenwhenthen
节点模块,并且我已按照其网站here. <上的“正在运行的故事”标题下列出的设置说明进行操作/ p>
我已将任务test:acceptance
添加到/~/node_modules/givenwhenthen/examples/
中的cakefile中,如下所示:
task 'test:acceptance', 'Runs the acceptance tests', (options = {}) ->
givenwhenthen.runner.runStories(options)
当我从同一目录运行cake
时,我会列出以下路径:
CakePHP v2.2.2 Console
App: examples
Path: /home/kyoob/node_modules/givenwhenthen/examples/
Root: /home/kyoob/node_modules/givnwhenthen
Core: /usr/share/php/cakephp/lib
我在“可用外壳”下看不到test:acceptance
,我根本看不到“可用任务”部分。这应该列在这里吗?
当我从此目录运行cake test:acceptance
时,我收到的消息是:
Shell class Test:acceptanceShell could not be found.
#0 /usr/share/php/cakephp/lib/Cake/Console/ShellDispatcher.php(191): ShellDispatcher->_getShell('test:acceptance')
#1 /usr/share/php/cakephp/lib/Cake/Console/ShellDispatcher.php(69): ShellDispatcher->dispatch()
#2 /usr/share/php/cakephp/lib/Cake/Console/cake.php(43): ShellDispatcher::run(Array)
#3 {main}
我尝试使用和不使用sudo
同样的效果。我是编辑CoffeeScript文件的新手,所以我担心这对我来说是一个新手的错误。我试图从错误的目录编译?我错过了一些明显的东西吗?
答案 0 :(得分:2)
When I run cake from that same directory I get the following paths listed:
CakePHP v2.2.2 Console
这意味着您正在运行CakePHP's cake cli。
When I run cake test:acceptance ...
此语法表示您尝试运行coffeescript cake
命令(两个命令的语法不同)。您可以通过运行来验证您正在调用哪个命令:
which cake
猜测/usr/share/php/cakephp/lib/Cake/Console
在您的路径中,这意味着当您键入cake
没有路径时,它会找到CakePHP的蛋糕脚本。最好纠正你的$PATH
删除CakePHP,从而避免歧义。
当你想运行coffeescript cake命令时 - 使用coffeescript cake命令:
$ /usr/local/bin/cake test:acceptance
或者,一旦您的$PATH
正确并且由于coffeescript默认在系统范围内安装它,您可以在没有路径的情况下使用它:
$ cake test:acceptance
如果你想运行 CakePHP 的cli(在你没有的问题中) - 在app文件夹中这样做,并使用相对路径:
$ cd /my/app
$ Console/cake
此命令仅在您的app文件夹中有效,并且不依赖于您的$PATH
。
如果有疑问,请使用可执行文件的绝对路径,但如果您正在使用CakePHP和coffeescript,并且完全不同且不兼容,则会认识到有两个脚本名为cake因此,将可接受的论点从一个传递给另一个将完全无法工作。