我的测试数据库离开了两天,并不关心救援

时间:2013-03-03 16:26:28

标签: ruby-on-rails datetime rspec cucumber koala

这里有两个问题:

我有这个代码在用户的Facebook墙上发布:

def publish_on_facebook
    if user.last_published < 1.day.ago
        @graph = Koala::Facebook::API.new(user.service.token)
        begin
            @graph.put_wall_post("some post")
            user.last_published = Time.now
            user.save
        rescue
            user.last_published = 1.week.from_now
            user.save
        end
    end
end

完美无缺:

如果用户授权我,它会发布并更新last_published(类型日期时间)字段。

如果用户未授权我在他的墙上发布内容,则会将last_published字段更新为1周后。

现在,当我通过我的Cucumber进行测试时,它不起作用:

当用户授权我时,last_published字段从现在起更新为1分钟,但是2天前

expected: > Sun, 03 Mar 2013 16:12:44 UTC +00:00
 got:   Fri, 01 Mar 2013 16:13:43 UTC +00:00

当用户未授权我时,last_published字段没有变化(我将字段的默认值设置为3月1日)

expected: > Sat, 09 Mar 2013 16:13:47 UTC +00:00
 got:   Fri, 01 Mar 2013 15:01:11 UTC +00:00

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

更新属性时,必须重新加载变量@user:

@user.update_attributes(attribute: value)
@user = User.find(@user)

Cucumber正在评估存储在@user中的值,这些值在方法运行后不是最新的。