Debuginfo

思考とアウトプット

入れ子になっているときのTest::MockObject

以下のようにNet::Rexster::RequestがNet::Rexster::Responseを呼ぶ場合はMockObjectをMockObject::Extendsにはめ込んでみる。

use Test::MockObject;
use Test::MockObject::Extends;
use Net::Rexster::Client;
use Net::Rexster::Request;

# Mock for Net::Rexster::Response  
my $mock = Test::MockObject->new();
$mock->set_always("get_results", "ok");
$mock->set_always("get_totalSize", 1);

# Mock Net::Rexster::Request 
my $req = Net::Rexster::Request;
$req = Test::MockObject::Extends->new( $req );
$req->mock('get', sub { return $mock } );