我很确定我错过了一些非常基本的东西.
我想测试before_save回调是否完成它应该做的事情,而不仅仅是它被调用.
我写了以下测试:
it 'should add lecture to question_type' do
@course = Factory :course,
:start_time => Time.now - 1.hour,
:end_time => Time.now
@question = Factory.create(:question,
:course_id => @course.id,
:created_at => Time.now - 10.minutes)
@question.question_type.should == 'lecture'
end
Run Code Online (Sandbox Code Playgroud)
我有以下工厂course和question:
Factory.define :course do |c|
c.dept_code {"HIST"}
c.course_code { Factory.next(:course_code) }
c.start_time { Time.now - 1.hour }
c.end_time { Time.now }
c.lecture_days { ["Monday", Time.now.strftime('%A'), "Friday"] }
end
Factory.define :question do |q|
q.content {"Why don't I understand …Run Code Online (Sandbox Code Playgroud) 我遇到的对我来说似乎是一个简单的问题,但我无法弄清楚我做错了什么.在我的应用中,用户可以通过简单的form_for添加他们的课程.他们可以为课程的讲座输入start_time和end_time,如下所示:
<div class="field">
Start Time<br />
<%= time_select :course, :start_time, { :minute_step => 5, :ampm => true } %>
</div>
<div class="field">
End Time<br />
<%= time_select :course, :end_time, { :minute_step => 5, :ampm => true } %>
</div>
Run Code Online (Sandbox Code Playgroud)
我将application.rb中的时区配置为设置为东部时间,这似乎正常工作,因为在正确的时区返回created_at.
但是,我遇到的问题是start_time和end_time作为UTC输入到数据库中.因此,当用户选择在上午10点开始的班级时,将其输入为10 UTC而不是10 AM EST/15:00 UTC.我在这里错过了什么?似乎我想要发生的事情应该是可能的.
我有一个名为两列的课程表dept_code,并course_code说都是字符串.
我正在编写我的规范,我想调用以下模块,以便我可以使用该valid_course_attributes方法为其分配属性@course.
module CoursesSpecHelper
def valid_course_attributes
{
:dept_code => 'HIST',
:course_code => '1010'
}
end
end
Run Code Online (Sandbox Code Playgroud)
该模块如下调用:
describe Courses do
require CoursesSpecHelper
before(:each) do
@course = Courses.new
end
it "should require dept_code" do
@course.attributes = valid_course_attributes.except(:dept_code)
@course.should have(1).error_on(:dept_code)
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行我的示例时,我不断收到以下错误:
TypeError: can't convert Module into String
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体,但我无法弄清楚这个问题的意义.
非常感谢!