This page looks best with JavaScript enabled

sorbetでmochaを使う方法

 ·  ☕ 1 min read

現象

sorbetでmochaのオブジェクトを引数として渡そうとすると以下のようなエラーが出る

1
TypeError: Parameter 'http_client': Expected type HttpClient, got type Mocha::Mock with value #<Mock:0xaa78>

これはsorbet-runtimeによる動的型チェックによりmochaのオブジェクトが sig で指定した型と違うということで怒られている

対処法

どうやら内部的には is_a? を使って型チェックをおこなっているようなので、mochaのオブジェクトで is_a? を受け取って true を返すようにしてしまえばよい

1
http_client = stub(get: nil, is_a?: true)

もしくは

1
2
http_client = stub(get: nil)
http_client.stubs(:is_a?).with(HttpClient).returns(true)
Share on

ippachi
WRITTEN BY
ippachi
Software Developer