2
我正在爲使用IO :: Socket :: INET的Perl模塊編寫一些單元測試,所以我想模擬IO: :使用Test :: MockObject的Socket :: INET模塊。如何使用Test :: MockObject模擬IO :: Socket :: INET
SP到目前爲止,我有類似
$INC{'IO/Socket/INET.pm'} = 1;
my $inet = Test::MockObject->new();
$inet->fake_module('IO::Socket::INET', new => sub { $inet });
但模塊中的代碼我測試有像
my $server = IO::Socket::INET->new(...);
my $data = <$server>
代碼,當我運行測試,我得到一個錯誤,如「不一個GLOB參考「當它試圖執行角度操作符。
我需要添加什麼來使我的模擬對象引用看起來像一個文件句柄,以便此代碼運行?
,謝謝,我已經找到一種方法與測試:: MockObject做到這一點了。您可以將glob引用傳遞給MockObject構造函數,因此我使用open(FH,「<」,\ $ scalar)創建文件句柄,然後將\\ * FH傳遞給MockObject-> new()。模擬對象的行爲就像一個文件句柄。 –