【问题标题】:Creating and using an Elixir helpers module in Phoenix在 Phoenix 中创建和使用 Elixir 助手模块
【发布时间】:2016-05-21 15:05:54
【问题描述】:

我在我的人造博客 phoenix 应用程序中创建了一组验收测试。他们之间有一些重复的逻辑我想转移到一个帮助模块来保持干燥。

目录结构如下:

test/acceptance/post
├── create_test.exs
├── delete_test.exs
├── helpers.exs
├── index_test.exs
└── update_test.exs

helpers.exs 文件是我想粘贴重复的验收测试逻辑的地方。它看起来像:

defmodule Blog.Acceptance.Post.Helpers do
  def navigate_to_posts_index_page do
    # some code
  end
end

然后在我的一个测试文件中,比如index_test.exs,我想导入 helpers 模块以使用它的方法:

defmodule Blog.Acceptance.Post.IndexTest do 
  import Blog.Acceptance.Post.Helpers
end

但是,我收到了这个错误:

** (CompileError) test/acceptance/post/index_test.exs:7: 模块 Blog.Acceptance.Post.Helpers 未加载且找不到

如何访问或加载测试文件中的帮助模块?

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    要使test_helpers.exs Helpers 模块可用,您需要使用Code.require_file 来加载它;但是,在这种情况下,phoenix 将您的项目配置为将test/support 中的.ex 文件完全编译到项目中以用于此类情况。因此,如果您将模块放在test/support/test_helpers.ex 中,它将与您的项目一起编译并可供所有测试文件使用,而无需Code.require_file 它。

    【讨论】:

    • 谢谢,克里斯!奇迹般有效。 ;) 在这种情况下,我喜欢 Code.require_file 方法,因为它允许我将帮助文件保存在同一目录中。但是,一旦我开始识别跨资源共享的逻辑,test/support/test_helpers.ex 方法将是一个很好的解决方案。
    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多