Date.today.to_s (: long) не преобразуется в строку - PullRequest
0 голосов
/ 07 мая 2020

Я работаю над заданием и на основе наших инструкций написал следующий метод:

def create_todolist(params)
    due_date = Date.today.to_s(:long)
    TodoList.create(list_name: params[:name],list_due_date: params[:due_date])
end

Но когда я запускаю тест rspe c, я получаю следующую ошибку:

1) Assignment rq03 rq03.2 assignment code has create_todolist method should create_todolist with provided parameters
     Failure/Error: expect(testList.list_due_date).to eq due_date

       expected: Thu, 07 May 2020
            got: "2020-05-07"

       (compared using ==)

       Diff:
       @@ -1,2 +1,2 @@
       -Thu, 07 May 2020
       +"2020-05-07"

     # ./spec/assignment_spec.rb:177:in `block (4 levels) in <top (required)>'
     # ./spec/assignment_spec.rb:14:in `block (2 levels) in <top (required)>'

Вот тест rspe c:

context "rq03.2 assignment code has create_todolist method" do
        it { is_expected.to respond_to(:create_todolist) } 
        it "should create_todolist with provided parameters" do
            expect(TodoList.find_by list_name: "mylist").to be_nil
            due_date=Date.today
            assignment.create_todolist(:name=> 'mylist', :due_date=>due_date)
            testList = TodoList.find_by list_name: 'mylist'
            expect(testList.id).not_to be_nil
            expect(testList.list_name).to eq "mylist"
            expect(testList.list_due_date).to eq due_date
            expect(testList.created_at).not_to be_nil
            expect(testList.updated_at).not_to be_nil
        end  
      end

Сначала у меня было только due_date = Date.today, и я получал ту же ошибку, и я не уверен, как ее исправить. Мне интересно, не потому ли, что я использую другую версию ruby ​​/ rails, чем та, которая использовалась при создании курса (5 лет go -_-).

Любая помощь была бы очень оценил!

Спасибо :)

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Вы пытаетесь сравнить объект Date:

due_date = Date.today

Со строковым объектом, который вы сгенерировали при создании своей записи:

Date.today.to_s(:long)

Как видите, это разные типы объектов:

Date.today.to_s(:long)
=> "May 07, 2020"
Date.today.to_s(:long).class
=> String

Date.today
=> 2020-05-07
Date.today.class
=> Date

Date.today.to_s(:long) == Date.today
=> false
0 голосов
/ 11 мая 2020

Я разобрался. Когда я создавал таблицу TodoLists, я не указывал тип миграции как: date. поэтому по умолчанию due_date была установлена ​​как строка. Итак, я установил type: date и изменил due_date на равный:

due_date = Date.today

Спасибо, что нашли время, чтобы помочь мне :)

...