Daniel P. Berrangé > Net-DBus-0.32.3 > Net::DBus::Test::MockObject

Download:
Net-DBus-0.32.3.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  7
Open  0
View/Report Bugs
Source   Latest Release: Net-DBus-1.0.0

NAME ^

Net::DBus::Test::MockObject - a 'mock' object for use in test suites

SYNOPSIS ^

  use Net::DBus;
  use Net::DBus::Test::MockObject;

  my $bus = Net::DBus->test

  # Lets fake presence of HAL...

  # First we need to define the service 
  my $service = $bus->export_service("org.freedesktop.Hal");

  # Then create a mock object
  my $object = Net::DBus::Test::MockObject->new($service,
                                                "/org/freedesktop/Hal/Manager");

  # Fake the 'GetAllDevices' method
  $object->seed_action("org.freedesktop.Hal.Manager", 
                       "GetAllDevices",
                       reply => {
                         return => [ "/org/freedesktop/Hal/devices/computer_i8042_Aux_Port",
                                     "/org/freedesktop/Hal/devices/computer_i8042_Aux_Port_logicaldev_input",
                                     "/org/freedesktop/Hal/devices/computer_i8042_Kbd_Port",
                                     "/org/freedesktop/Hal/devices/computer_i8042_Kbd_Port_logicaldev_input"
                         ],
                       });


  # Now can test any class which calls out to 'GetAllDevices' in HAL
  ....test stuff....

DESCRIPTION ^

This provides an alternate for Net::DBus::Object to enable bus objects to be quickly mocked up, thus facilitating creation of unit tests for services which may need to call out to objects provided by 3rd party services on the bus. It is typically used as a companion to the Net::DBus::MockBus object, to enable complex services to be tested without actually starting a real bus.

!!!!! WARNING !!!

This object & its APIs should be considered very experimental at this point in time, and no guarentees about future API compatability are provided what-so-ever. Comments & suggestions on how to evolve this framework are, however, welcome & encouraged.

METHODS ^

my $object = Net::DBus::Test::MockObject->new($service, $path, $interface);

Create a new mock object, attaching to the service defined by the $service parameter. This would be an instance of the Net::DBus::Service object. The $path parameter defines the object path at which to attach this mock object, and $interface defines the interface it will support.

BUGS ^

It doesn't completely replicate the API of Net::DBus::Binding::Object, merely enough to make the high level bindings work in a test scenario.

SEE ALSO ^

Net::DBus, Net::DBus::Object, Net::DBus::Test::MockConnection, http://www.mockobjects.com/Faq.html

COPYRIGHT ^

Copyright 2005 Daniel Berrange <dan@berrange.com>

syntax highlighting: