我创建了一个自定义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;
}
答案 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
等