2016-03-04 21 views
5

我正在使用Emacs和子弹并尝试设置测试文件的路径,以便我可以使用projectile-toggle-between-implementation-and-test如何使用弹丸发现测试文件

我打电话M-X弹丸发现测试文件但头盔缓冲区为空。无论我在pattern字段中输入了什么内容,Helm缓冲区中没有任何文件选择并输入相对于项目根目录的测试文件路径,只会导致在项目根目录打开Dired缓冲区。

请告知如何使用projectile-find-test-file

回答

6

projectile通过向源文件中添加后缀/前缀来猜测给定源文件的测试文件名。例如,如果您有hello.rb,那么它会尝试在您的项目中找到名为hello_test.rb的文件。

它默认有一些从项目类型映射到测试后缀/前缀的规则。下面是实际的代码:

(defun projectile-test-suffix (project-type) 
    "Find default test files suffix based on PROJECT-TYPE." 
    (cond 
    ((member project-type '(rails-rspec ruby-rspec)) "_spec") 
    ((member project-type '(rails-test ruby-test lein-test go)) "_test") 
    ((member project-type '(scons)) "test") 
    ((member project-type '(maven symfony)) "Test") 
    ((member project-type '(gradle grails)) "Spec"))) 

如果你没有看到在projectile-find-test-file任何东西,这意味着它很可能无法找到通过添加后缀/前缀与源文件什么。

这可以通过projectile-test-suffix-function定制。默认情况下,变量指向上面的函数,但您可以使用自己的规则覆盖它。

3

这是不是一个伟大的回答你的问题,但projectile-find-test-file只是挂了我之前,我甚至有一个提示。我没有倾斜弄清楚发生了什么事情在那里,所以我刚刚创建:

(defun my-test-prefix (project-type) "test_") 

和定制projectile-test-function-prefix指向这一点。这得到projectile-toggle-between-implementation-and-test为我工作,这是我真正需要的。