私はBustedを使って既存のluaファイルの単体テストを書こうとしています。テスト中にいくつかのメソッドを交換したいので、実際のファイルではなく模擬/スタブ付きのメソッドでファイルを実行します(それ以外の場合は失敗します)。ファイルが呼び出すメソッドの中には、他のluaライブラリから取り込まれたものもあります。私もこれらを嘲笑したいと思います。Bustedテスト中の既存のluaファイルのメソッドをモックする
これはどのように達成できますか?
ご協力いただきありがとうございます。
私はBustedを使って既存のluaファイルの単体テストを書こうとしています。テスト中にいくつかのメソッドを交換したいので、実際のファイルではなく模擬/スタブ付きのメソッドでファイルを実行します(それ以外の場合は失敗します)。ファイルが呼び出すメソッドの中には、他のluaライブラリから取り込まれたものもあります。私もこれらを嘲笑したいと思います。Bustedテスト中の既存のluaファイルのメソッドをモックする
これはどのように達成できますか?
ご協力いただきありがとうございます。
ローカル関数を簡単に置き換えることはできませんが、エクスポート関数やグローバル関数を置き換えるのは簡単です。
たとえば、rest.http
ライブラリからhttp:new().request(...)
経由でHTTPコールをモックする必要がありました。これは私のテストで行ったことです:
local http = require 'resty.http'
http.new = function()
return {
request = function(self, args)
-- ... some mock implementation
end
}
end
このアプローチは、エクスポートされたすべての機能に有効です。たとえば、ライブラリbar
の関数foo
を置き換えるとします。
local bar = require 'bar'
bar.foo = myMockImpl
は、例えば、_G
を上書きすることによって達成することができ、これはグローバル関数や変数foo
を変更します:
_G.foo = ...
バステッドは自動的に環境を復元するためにサポートしています。 documentationの「insulate」を検索してください。