bur*_*rce 2 ruby ruby-on-rails factories factory-bot
我有一个初始化中有多个参数的模型,其中一个在实例化模型的方法中使用:
def initialize(sha, message, repo)
sha = commit.sha
message = commit.message
associate_with(repo)
end
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用这些参数创建一个初始化它的工厂,但wrong number of arguments在尝试时会遇到错误:
FactoryGirl.define do
factory :commit do
intialize_with { new("test_sha", "test_msg", "test_repo") }
end
end
Run Code Online (Sandbox Code Playgroud)
但这给了我wrong number of arguments (0 for 3).是不是可以传递多个args initialize_with?
initialize上面的方法是Commit因为你正在调用的类Commit.new("test_sha", "test_msg", "test_repo")
因为我怀疑这是否适用Commit.
FactoryGirl.define do
factory :commit do
sha "test_sha"
message "test_message"
repo "test_repo"
intialize_with { new(sha,message,repo) }
end
end
Run Code Online (Sandbox Code Playgroud)
这会打电话
Commit.new({sha: "test_sha", message: "test_message", repo: "test_repo"})
Run Code Online (Sandbox Code Playgroud)
然后,您必须正确地初始化您的其他对象
FactoryGirl.define do
factory :my_other_class do
initialize_with { new('test_sha', 'test_msg', 'test_repo') }
end
end
Run Code Online (Sandbox Code Playgroud)
哪个会调用MyOtherClass.new("test_sha", "test_msg", "test_repo")虽然即使这看起来有缺陷,因为你期望MyOtherClass引用一个提交并被覆盖sha,message也许更多代码会有用
| 归档时间: |
|
| 查看次数: |
5867 次 |
| 最近记录: |