小编Phi*_*p V的帖子

使用Rspec和Factory Girl测试before_save回调

我很确定我错过了一些非常基本的东西.

我想测试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)

我有以下工厂coursequestion:

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)

rspec2 ruby-on-rails-3 factory-bot

6
推荐指数
1
解决办法
4506
查看次数

time_select form helper将新时间对象解释为UTC而不是配置的时区

我遇到的对我来说似乎是一个简单的问题,但我无法弄清楚我做错了什么.在我的应用中,用户可以通过简单的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.我在这里错过了什么?似乎我想要发生的事情应该是可能的.

time timezone ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
3265
查看次数

尝试要求模块时,Ruby返回TypeError

我有一个名为两列的课程表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)

我尝试了几种变体,但我无法弄清楚这个问题的意义.

非常感谢!

ruby ruby-on-rails rspec2

1
推荐指数
1
解决办法
1796
查看次数