mruby-yyjsonのテストコードを書くために、一部stubしたい部分ができた。 mruby-mtestにはstubする機能なく、mgem-listにもなさそうなので作った。
作ったと言ってもほとんどminitestのポーティングみたいな感じでスッと作れてよかった。
使い方
mrgem.rakeに以下を追加する。 これを追加するとrake testするときにObject.#stubが追加される。
# mrbgem.rake MRuby::Gem::Specification.new('mruby-yyjson') do |spec| -- snip -- spec.add_test_dependency 'mruby-test-stub', github: 'buty4649/mruby-test-stub', branch: 'main' -- snip -- end
以下はmruby-yyjsonでの利用例。
assert('JSON.#load') do stub = lambda do |obj, opts| assert_equal 'mruby-yyjson', obj, "Expected 'mruby-yyjson' as input to JSON.parse" assert_equal({ symbolize_names: true }, opts, 'Expected options { symbolize_names: true } for JSON.parse') 'stub parse' end JSON.stub(:parse, stub) do assert_equal 'stub parse', JSON.load('mruby-yyjson', symbolize_names: true) end end
基本的にはminitestのように使えるはず。