0

現在、I am ビルドには、単体テストを作成する次の 2 つの行があります。

system @command.join(' ')
exit $?.exitstatus

これで、次のようなことができることがわかりました。

Kernel.should_receive(:system).with()
Kernel.should_receive(:exit).with(0)

ただし、gem が呼び出す$?.exitstatusと、これをモック/スタブできませんでした。

誰もこれを行う方法を知っていますか??

4

1 に答える 1

1

これに基づい

スタブではなく、現在のクラスからKernelスタブする必要があります。system

例えば

#user.rb
def self.my_test
  system('ls')
end

#test
User.should_receive(:system).and_return('aaa')
User.my_test # => 'aaa'

any_instanceクラススコープ外で呼び出される場合は、スタブを使用することを忘れないでください

于 2013-09-19T13:55:35.740 に答える