rake任务的RSpec测试

时间:2015-06-23 15:07:14

标签: ruby-on-rails ruby rspec rake-task

我创建了一个自定义rake任务,删除了> = 7天之前的所有项目。我正在尝试为这个新任务编写一个RSpec测试,但似乎我的任务并没有真正在测试中运行。我已经手动测试了任务,它按预期工作,但我似乎无法使RSpec测试工作。我是RSpec的新手。

LIB /任务/ todo.rake

<div class="progress-bar" ng-style="{width: getProgress() + '%'}">

规格/任务/ delete_items_task_spec.rb

function getCETorCESTDate() {
    var localDate = new Date();
    var utcOffset = localDate.getTimezoneOffset();
    var cetOffset = utcOffset + 60;
    var cestOffset = utcOffset + 120;
    var cetOffsetInMilliseconds = cetOffset * 60 * 1000;
    var cestOffsetInMilliseconds = cestOffset * 60 * 1000;

    var cestDateStart = new Date();
    var cestDateFinish = new Date();
    var localDateTime = localDate.getTime();
    var cestDateStartTime;
    var cestDateFinishTime;
    var result;

    cestDateStart.setTime(Date.parse('29 March ' + localDate.getFullYear() + ' 02:00:00 GMT+0100'));
    cestDateFinish.setTime(Date.parse('25 October ' + localDate.getFullYear() + ' 03:00:00 GMT+0200'));

    cestDateStartTime = cestDateStart.getTime();
    cestDateFinishTime = cestDateFinish.getTime();

    if(localDateTime >= cestDateStartTime && localDateTime <= cestDateFinishTime) {
        result = new Date(localDateTime + cestOffsetInMilliseconds);
    } else {
        result = new Date(localDateTime + cetOffsetInMilliseconds);
    }

    return result;
}

2 个答案:

答案 0 :(得分:2)

设置old_item后,您尚未保存created_at = 12.days.ago,所以在数据库中,它仍然是刚创建的。添加save,使用update_attributes(created_at: 12.days.ago),或者我非常确定您可以在created_at属性中添加create

答案 1 :(得分:2)

一些事情。
首先,您应该将created_at放在create方法中:user.items.create(description: "Old Item", created_at: 12.days.ago)

其次,您需要调用user.reload才能使rake任务的更改可用。所以看起来应该是这样的: user.reload expect(user.items.count).to eq 1