とりあえずコード書けよ

技術的なことの備忘録。

Minitest::Mock#expectで ArgumentError: mocked method :method_name expects 1 arguments, got [] が出た件

結論

  • minitest5.16.0からキーワード引数の指定方法が変わった
  • 第三引数以降にkey, valueのキーワード引数を書いたらOK

概要

minitestで下記のエラーが出るようになった

ArgumentError: mocked method :method_name expects 1 arguments, got []

理由

元々、minitestにキーワード引数を渡すときは、第三引数にキーワード引数を渡していた。 ※コードは適当 github.com

tax_mock = Minitest::Mock.new
tax_mock.expect(:tax, 8, [{ price: 100, tax_rate: 0.08 }])

が、5.16.0からkwargsに対応している。 github.com github.com

なので、5.16.0以降は、キーワード引数の場合、下記のように記述することになる。

tax_mock = Minitest::Mock.new
tax_mock.expect(:tax, 8, price: 100, tax_rate: 0.08)