gpt4 book ai didi

ruby-on-rails - DRYer 在 factory_girl 中与协会进行测试

转载 作者:行者123 更新时间:2023-11-28 20:25:31 28 4
gpt4 key购买 nike

谁能建议一个更好的方法让工厂使用预建模型其协会的实例?例如,这样就有可能下面定义消息工厂的子项,以便调用Factory(:my_message) 可以替代工厂(:message,:sender=>@me) ?

有时设置哈希比这个人为的涉及更多例如,或者只是在如此多的测试中重复,以至于将其插入工厂似乎更好。

我能想到的一个替代方法是定义一个测试辅助方法例如 create_message_owned_by(@me),但我希望 factory_girl 本身有办法。

factory_girl 工厂:

Factory.define :sender do |s|
sender.name "Dummy name"
end

Factory.define :message do |msg|
msg.text "Dummy text"
msg.association :sender
end

Factory.define :my_message, :parent=>:message do |msg|
msg.text "Dummy text"
### ? what goes here for msg.association :sender ? ###
end

MessagesControllerTest 摘录(使用 shoulda):

context "on GET /messages" do
setup do
@me = Factory(:sender)
@my_message = Factory(:message,:sender=>@me)
@somebody_elses_message = Factory(:message)
sign_in_as(@me)
get :index
end
should "only assign my messages" do
assert_contains(assigns(:messages), @my_message)
assert_does_not_contain(assigns(:messages), @somebody_elses_message)
end
end

最佳答案

我不知道这是否是您要查找的内容,但如果您首先创建消息,则可以通过它获取发件人并将其分配给 @me

@my_message = Factory(:message)
@me = @my_message.sender

这有什么帮助吗?

关于ruby-on-rails - DRYer 在 factory_girl 中与协会进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275647/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com