如何使用 projectile-find-test-file

How to use projectile-find-test-file

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

我调用了 M-xprojectile-find-test-file 但是 Helm 缓冲区是空的。无论我在 pattern 字段中输入什么,Helm 缓冲区中都没有文件显示到 select 并且输入相对于项目根目录的测试文件路径只会导致在项目根目录中打开一个 Dired 缓冲区。

请指教如何使用projectile-find-test-file

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

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

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

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

它默认有一些从项目类型映射到测试的规则suffix/prefix。这是实际的代码:

(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 中没有看到任何内容,这意味着它很可能无法通过添加 suffix/prefix.

找到与您的源文件相关的任何内容

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