【问题标题】:Ruby rspec converting mock hash with strings into hash with symbolRuby rspec将带有字符串的模拟哈希转换为带有符号的哈希
【发布时间】:2020-07-07 16:22:58
【问题描述】:

我在一个普通的 ruby​​ 项目中,我有这个模拟:

  let(:mock_binance_client) { instance_double(Binance::Client::REST, time: {"serverTime": 1594138489530}) }

这表示当调用时间时,它应该返回一个带有字符串键的散列。但是,在我的实际代码中会发生这种情况:

  def time
    print @client.time
    Time.at(@client.time["serverTime"] / 1000).strftime(FORMAT_DATE_WITH_MILLISECONDS)
  end
$ rspec
{:serverTime=>1594138489530}F

发生了什么事?我该如何防止这种情况发生?或者我可以做些什么来解决这个问题?

【问题讨论】:

  • 啊我需要使用 => 而不是:

标签: ruby rspec


【解决方案1】:

在我的测试中,rspec 不应该进行这种转换——你肯定还有其他事情发生。

话虽如此,转换很容易:

{ a: 1, b: 2 }.transform_keys(&:to_s)
# => { 'a' => 1, 'b' => 2 }

{ 'a' => 1, 'b' => 2 }.transform_keys(&:to_sym)
# => { a: 1, b: 2 }

您可以将代码更改为始终将前者改为@client.time,以将信息强制转换为已知格式。

我认为您仍然应该尝试调试您的规范以了解转换发生的原因。 (它甚至是你认为的对象吗?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 2015-04-02
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多