7

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

我打电话M-xprojectile-find-test-file,但 Helm 缓冲区是空的。无论我在该pattern字段中输入什么内容,Helm 缓冲区中都不会出现可供选择的文件,并且输入相对于项目根目录的测试文件路径只会导致在项目根目录处打开一个 Dired 缓冲区。

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

4

2 回答 2

7

projectile通过在源文件中添加后缀/前缀来猜测给定源文件的测试文件名。例如,如果您有一个hello.rbthen 它会尝试查找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。默认情况下,变量指向上面的函数,但您可以使用自己的规则覆盖它。

于 2016-11-28T23:52:41.500 回答
4

这不是你问题的一个很好的答案,但projectile-find-test-file在我得到提示之前就挂了。我不想弄清楚那里发生了什么,所以我只是创建了:

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

并定制projectile-test-function-prefix指向这一点。这projectile-toggle-between-implementation-and-test对我有用,这是我真正需要的。

于 2016-08-17T18:50:29.190 回答