如何使用projectile-find-test-file

时间:2016-03-04 20:38:07

标签: emacs emacs-prelude emacs-helm

我使用Emacs和projectile并尝试设置测试文件的路径,以便我可以使用projectile-toggle-between-implementation-and-test

我调用 M-x projectile-find-test-file 但是Helm缓冲区为空。无论我放在pattern字段中,Helm缓冲区中没有文件显示选择并输入相对于项目根目录的测试文件路径只会导致Dired缓冲区在项目根目录下打开。

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

2 个答案:

答案 0 :(得分:7)

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自定义。默认情况下,变量指向上面的函数,但您可以使用自己的规则覆盖它。

答案 1 :(得分:4)

对于你的问题,这不是一个很好的答案,但在我得到提示之前,projectile-find-test-file只是挂在我身边。我没有意识到那里发生了什么,所以我刚刚创建了:

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

并自定义projectile-test-function-prefix以指出这一点。这让projectile-toggle-between-implementation-and-test为我工作,这是我真正需要的。