NAME

Test::Builder::Mock::Class - Simulating other classes with Test::Builder

SYNOPSIS

use Test::Builder::Mock::Class ':all';
mock_class 'Net::FTP' => 'Net::FTP::Mock';
my $mock_object = Net::FTP::Mock->new;

# anonymous mocked class
my $metamock = mock_anon_class 'Net::FTP';
my $mock_object = $metamock->new_object;

DESCRIPTION

This module adds support for standard Test::Builder framework (Test::Simple or Test::More) to Test::Mock::Class.

Mock class can be used to create mock objects which can simulate the behavior of complex, real (non-mock) objects and are therefore useful when a real object is impractical or impossible to incorporate into a unit test.

INHERITANCE

extends Moose::Meta::Class
with Test::Builder::Mock::Class::Role::Meta::Class

FUNCTIONS

mock_class(class : Str, mock_class : Str = undef) : Moose::Meta::Class

Creates the concrete mock class based on original class. If the name of mock_class is undefined, its name is created based on name of original class with added ::Mock suffix.

The function returns the metaclass object of new mock_class.

mock_anon_class(class : Str) : Moose::Meta::Class

Creates an anonymous mock class based on original class. The name of this class is automatically generated.

The function returns the metaobject of new mock class.

IMPORTS

Test::Builder::Mock::Class ':all';

Imports all functions into caller's namespace.

EXAMPLE

The Test::Builder::Mock::Class fits perfectly to Test::Builder tests. It adds automatically the tests for each mock_invoke (which is called implicitly by all mock methods) and mock_tally. It means that you need to add these tests to your test plan.

Example code:

package My::ExampleTest;

use Test::More tests => 3;
use Test::Builder::Mock::Class ':all';

my $mock = mock_anon_class 'IO::File';
my $io = $mock->new_object;
$io->mock_return( open => 1, args => [qr//, 'r'] );

ok( $io->open('/etc/passwd', 'r'), '$io->open' );
$io->mock_tally;

SEE ALSO

Mock metaclass API: Test::Builder::Mock::Class::Role::Meta::Class, Moose::Meta::Class.

Mock object methods: Test::Builder::Mock::Class::Role::Object.

Perl standard testing: Test::Builder, Test::More, Test::Simple.

Mock classes for Test::Unit::Lite: Test::Mock::Class.

Other implementations: Test::MockObject, Test::MockClass.

BUGS

The API is not stable yet and can be changed in future.

AUTHOR

Piotr Roszatycki <dexter@cpan.org>

LICENSE

Based on SimpleTest, an open source unit test framework for the PHP programming language, created by Marcus Baker, Jason Sweat, Travis Swicegood, Perrick Penet and Edward Z. Yang.

Copyright (c) 2009 Piotr Roszatycki <dexter@cpan.org>.

This program is free software; you can redistribute it and/or modify it under GNU Lesser General Public License.