首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >timecop.travel测试返回false而不是true - rails。

timecop.travel测试返回false而不是true - rails。
EN

Stack Overflow用户
提问于 2020-11-09 06:10:59
回答 1查看 212关注 0票数 0

我正在写一个单元测试,以检查24小时是否已经通过。如果24小时过去了,那么它应该返回true。

这是我的尝试

代码语言:javascript
复制
test   "messenger tag is more than 24 hours" do
        
        Timecop.travel 2.days.ago
        account = accounts(:messenger_v2)
        contact_d = Contact.create! account: account, name: 'Mr Right', phone_number: nil, external_id: '155581474881005', contact_type: 'MessengerV2', source: 'Inbound', is_registered: true, primary_contact: true
        conversation = Conversation.create! contact: contact_d, account: account, status: 'Open', unread: true, conversation_type: 'Private'
        Message.create! contact: contact_d, message_type: 'Text', text: 'I have some enquries', direction: 'IN', account: account, conversation: conversation, external_id: "in_a#{Time.now.to_i.to_s}"
        msg = conversation.messages.incoming
        time_created = msg.last.created_at
        messenger_tags = time_created < 24.hours.ago
        assert_equal true, messenger_tags
            
    end

当我运行测试时,这里是输出

代码语言:javascript
复制
test_messenger_tag_is_more_than_24_hours                        FAIL (0.14s)
        Expected: true
          Actual: false
        test/models/message_test.rb:175:in `block in <class:MessageTest>'

请协助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 06:45:34

创建消息后,需要使用turn off Timecop使用Timecop.return

代码语言:javascript
复制
test "messenger tag is more than 24 hours" do
    Timecop.travel 2.days.ago
    account = accounts(:messenger_v2)
    contact_d = Contact.create! account: account, name: 'Mr Right', phone_number: nil, external_id: '155581474881005', contact_type: 'MessengerV2', source: 'Inbound', is_registered: true, primary_contact: true
    conversation = Conversation.create! contact: contact_d, account: account, status: 'Open', unread: true, conversation_type: 'Private'
    Message.create! contact: contact_d, message_type: 'Text', text: 'I have some enquries', direction: 'IN', account: account, conversation: conversation, external_id: "in_a#{Time.now.to_i.to_s}"
    Timecop.return
    msg = conversation.messages.incoming
    time_created = msg.last.created_at
    messenger_tags = time_created < 24.hours.ago
    assert_equal true, messenger_tags
end

更新或您可以阻止到Timecop.travel,以避免调用@Stefan在下面的注释中提到的Timecop.return

代码语言:javascript
复制
test "messenger tag is more than 24 hours" do
    Timecop.travel 2.days.ago do
        account = accounts(:messenger_v2)
        contact_d = Contact.create! account: account, name: 'Mr Right', phone_number: nil, external_id: '155581474881005', contact_type: 'MessengerV2', source: 'Inbound', is_registered: true, primary_contact: true
        conversation = Conversation.create! contact: contact_d, account: account, status: 'Open', unread: true, conversation_type: 'Private'
        Message.create! contact: contact_d, message_type: 'Text', text: 'I have some enquries', direction: 'IN', account: account, conversation: conversation, external_id: "in_a#{Time.now.to_i.to_s}"
        msg = conversation.messages.incoming
        @time_created = msg.last.created_at
    end
    messenger_tags = @time_created < 24.hours.ago
    assert_equal true, messenger_tags
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64746620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档