ruby-on-rails - 从 .yml 创建一个实例

标签 ruby-on-rails ruby testing

我有一个 Article 类的 Rails 单元测试,我有一个断言来测试创建!方法。我基本上想从 .yml 数据创建对象。像这样:

在我的 yaml 文件 .../test/fixtures/articles.yml 中:

one:
  id: 1
  title: MyText
  abstract: MyText
  place: MyString
  subject: MyString

在 article_test.rb 中:

def test_create_a_new_article
  assert Article.create!(articles(:one))
end

我不断收到 NoMethodError: undefined methodstringify_keys' for #<\Article:0x0000010819b640> 我对此并不感到惊讶,但如何调用创建!来自 articles(:one) 创建的 Article 实例?我通过在哈希中传递参数来在我的运行代码中实例化文章。如果我能做类似的事情就太好了:assert Article.create!(articles(:one).to_hash)`

感谢您的帮助。

最佳答案

当您调用 articles(:one) 时,您将返回一个 Article 对象,该对象具有 fixture 中定义的属性。这意味着您可以按原样使用它,即

articles(:one).some_method

或者把它赋给一个变量

article = articles(:one)

基本上是 rails fixture 魔法

编辑

Article.create articles(:one).attributes.except("id")

不确定是否需要排除 id

关于ruby-on-rails - 从 .yml 创建一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193172/

相关文章:

ruby-on-rails - 使用mongodb ruby​​驱动连接rails API应用程序和mongodb时要修改哪个文件

python - Django 如何使用验证器测试模型功能

java - 测试 X = A、B 或 C

ruby-on-rails - 设计测试助手 - sign_in 不起作用

ruby-on-rails - 使用 Rails 时如何将 ID 号植入我的数据中?

ruby-on-rails - 带有 native 扩展的MySQL2错误:无法构建gem native 扩展。 (Gem::Installer::ExtensionBuildError)

ruby-on-rails - 在 Devise 注册时提交时为 "Unpermitted parameter: email"

java - Rails 上的 Rest api

ruby-on-rails - Rails 4 session.id 偶尔为零

ruby-on-rails - 如何让 jquery animate 在 Rails 4.0.0 上工作?