0

data_mapper と sqlite3 と rspec を使用して時間を節約するという特有の問題があります

以下の仕様を実行すると、この失敗レポートが表示されます

    # expected: 2013-01-04 07:30:00 +1100
    # got: 2013-01-04 00:00:00 +1100

ファイルを手動でirbに保存しようとすると、

    # irb(main):003:0> Sleep.create(:id => 1, :wake_time => Time.new(2013, 01, 04, 07, 30, 00))
    # => #<Sleep @id=1 @wake_time=2013-01-04 07:30:00 +1100>

要約すると、文字列を取得して分割し、新しい Time オブジェクトに挿入する rspec テストを実行すると、Time 部分が誤って 00:00:00 として保存されます。

また、テストの実行後に、テストされたレコードの db を確認すると、時間が 00:00:00 として誤って保存されていることも確認できます (念のため、rspec の比較または db の取得で何かを疑っている場合に備えて)オフでした :) )

これの真相を知りたいのですが、本当にイライラしています。特に日付はあまり気にしないことを考えると(しかし、今興味をそそられたのでこれを解決したいと思います;))

また、データベースへの時間を節約するためのより良い方法があれば、提案をお待ちしています。ありがとう!

life_dm.rb

require "rubygems"
require "json"
require "sqlite3"
require "data_mapper"
require "bigdecimal"


DataMapper::setup(:default, "sqlite3://#{Dir.pwd}../spec/resources/test.db")

class Sleep

    include DataMapper::Resource
    property :id, Integer, :key => true #easier to get methods when key is id vs week
    property :wake_time, Time

end

DataMapper.finalize.auto_migrate!

sleep.rb

def update_sleep_data (id,wake_time)

    #I have also tried saving the time as an sql date/time string
    #i.e :wake_time => "2013-01-04 #{wake_time[0..1]}:#{wake_time[2..3]}"
    #but get the same result with rspec getting 
    Sleep.create(:id => id, :wake_time => Time.new(2013,01,04,wake_time[0..1].to_i,wake_time[2..3].to_i))

end

sleep_spec.rb

require 'data_mapper'
require_relative '../../data/life_dm'
require_relative '../../methods/sleep'

describe "sleep table" do

    it "saves info about sleep to the db" do

        @id = 1
        @wake_time = "0730"
        update_sleep_data(@id, @wake_time)

        sleep_1 = Sleep.get 1

        sleep_1[:id].should eql 1
        sleep_1[:wake_time].should eql Time.new(2013,01,04,07,30,00)




    end

end
4

1 に答える 1

0

あなたの弦が気に入らTime::newないようです。代わりに整数を渡します。これは、他のパラメーターに対して正常に機能するようです。

sleep.rb使用中wake_time[0..1].to_iwake_time[2..3].to_i

于 2013-01-09T08:09:42.657 に答える