gpt4 book ai didi

ruby-on-rails - 在 Rails 中,我如何测试在 Controller 中对模型实例所做的修改?

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

我刚刚开始尝试为我的 Rails 应用程序编写测试套件。我在 Rails 3 应用程序上使用 Factory Girl 和 Shoulda。在我的 Controller 中,我有:

def create
@topic = @forum.topics.build(params[:topic])
@topic.user = current_user

#So the topic gets pushed to the top without any replies
@topic.last_poster = current_user
@topic.last_post_at = Time.now

respond_to do |format|
if @topic.save
format.html { redirect_to(forum_topic_path(@topic.forum, @topic), :notice => 'Topic was successfully created.') }
format.xml { render :xml => @topic, :status => :created, :location => @topic }
else
format.html { render :action => "new" }
format.xml { render :xml => @topic.errors, :status => :unprocessable_entity }
end
end
end

我的问题是,我将如何编写测试来验证@topic.last_post_at 是否正确地加了时间戳和保存,我是将此测试编写为功能测试还是单元测试?

最佳答案

首先,我会把很多这样的功能移到模型中。例如:

class Topic
after_create :set_defaults

protected

def set_defaults
update_attributes :last_poster => self.user, :last_post_at => Time.now
end
end

然后我会编写一个模型测试以确保时间和用户得到设置并简化我的 Controller 代码,如下所示:

def create
@topic = @forum.topics.build(params[:topic].merge({:user => current_user}))

respond_to do |format|
...
end
end

关于ruby-on-rails - 在 Rails 中,我如何测试在 Controller 中对模型实例所做的修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952563/

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