【问题标题】:Verifying struct keys presence in tests在测试中验证结构键的存在
【发布时间】:2021-05-04 01:40:41
【问题描述】:
assert Contract.fetch(contract: valid_address) == %Contract{
         contract: "0x3D29Aa78fB558F84112bbC48a84F371147A920C9",
         name: "bla",
         price: nil,
         price_bnb: nil,
         call_id: 7,
         symbol: nil,
         transactions: []
       }

此测试通过,但是 Contract 结构包含的键比测试中此处列出的要多,如果未提供所有键,我如何使此测试失败?

【问题讨论】:

  • “未提供”是什么意思?你的意思是nil?还是您的意思是“不存在于结构上”。因为键总是出现在结构中。

标签: elixir ex-unit


【解决方案1】:

ExUnit.Assertions.assert/1 中使用pattern matching,而不是相等检查。

assert %Contract{
         contract: "0x3D29" <> _,
         name: "bla",
       } = Contract.fetch(contract: valid_address)

【讨论】:

  • 谢谢,但如果我错过在左侧指定一个键,测试通过
  • 我不关注。结构不是映射,你不能“错过”一个键。如果没有指定,它包含默认值并且仍然在模式匹配中播放。
猜你喜欢
  • 1970-01-01
  • 2020-12-26
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
相关资源
最近更新 更多