NAME Test::Mountebank - Perl client library for mountebank SYNOPSIS use Test::Mountebank; # Create mountebank client with default port 2525 my $mb = Test::Mountebank::Client->new( base_url => 'http://127.0.0.1' ); # Create an imposter that answers on port 4546 my $imposter = $mb->create_imposter( port => 4546 ); # Adds a stub to the imposter with a predicate and a response # (Responds to URL /foobar.json, returns JSON content '{"foo":"bar"}') $imposter->stub->predicate( path => "/foobar.json", method => "GET", )->response( status_code => 200, content_type => "application/json", # Equivalent: # headers => { Content_Type => "application/json" }, body => { foo => "bar" }, # Equivalent: # body => '{ "foo":"bar" }', ); # Adds a stub for a non-existent resource $imposter->stub->predicate( path => "/qux/999/json", method => "GET", )->response( status_code => 404, content_type => "application/json", body => '{ "error": "No such qux: 999" }', ); # Add a stub to return HTML content read from a file $imposter->stub->predicate( path => "/foobar.html", method => "GET", )->response( status_code => 200, content_type => "text/html", body_from_file => './foobar.html', ); # Clear existing imposter on port 4546 $mb->delete_imposters(4546); # Takes more than one port number, if desired # Send the new imposter to mountebank $mb->save_imposter($imposter); DESCRIPTION The example in the synopsis builds an object structure that generates JSON code like the following, which can be sent to the running mountebank instance in a POST request. { "port": 4546, "protocol": "http", "stubs": [ { "predicates": [ { "equals": { "method": "GET", "path": "/foobar.json" } } ], "responses": [ { "is": { "body": { "foo": "bar" }, "headers": { "Content-Type": "application/json" }, "statusCode": 200 } } ] }, { "predicates": [ { "equals": { "method": "GET", "path": "/qux/999/json" } } ], "responses": [ { "is": { "body": "{ \"error\": \"No such qux: 999\" }", "headers": { "Content-Type": "application/json" }, "statusCode": 404 } } ] }, { "predicates": [ { "equals": { "method": "GET", "path": "/foobar.html" } } ], "responses": [ { "is": { "body": "\n \n foobar\n \n \n foobar\n \n\n\n", "headers": { "Content-Type": "text/html" }, "statusCode": 200 } } ] } ] } Compare the mountebank documentation at http://www.mbtest.org/docs/api/stubs and http://www.mbtest.org/docs/api/predicates. Currently at least, Test::Mountebank implements only the features of mountebank stubs that are most useful for simulating a REST API. There is only one type of predicate (`equals') and only one type of response (`is'). AUTHOR Dagfinn Reiersøl dagfinn@reiersol.com COPYRIGHT Copyright (C) 2016, Dagfinn Reiersøl.