.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Test::Mock::Redis 3pm" .TH Test::Mock::Redis 3pm "2014-09-08" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Test::Mock::Redis \- use in place of Redis for unit testing .SH "VERSION" .IX Header "VERSION" Version 0.15 .SH "SYNOPSIS" .IX Header "SYNOPSIS" Test::Mock::Redis can be used in place of Redis for running tests without needing a running redis instance. .PP .Vb 1 \& use Test::Mock::Redis; \& \& my $redis = Test::Mock::Redis\->new(server => \*(Aqwhatever\*(Aq); \& \& $redis\->set($key, \*(Aqsome value\*(Aq); \& \& $redis\->get($key); \& \& ... .Ve .PP This module is designed to function as a drop in replacement for Redis.pm for testing purposes. .PP See perldoc Redis and the redis documentation at .SH "PERSISTENCE" .IX Header "PERSISTENCE" The \*(L"connection\*(R" to the mocked server (and its stored data) will persist beyond the object instance, just like a real Redis server. This means that you do not need to save the instance to this object in order to preserve your data; simply call \f(CW\*(C`new\*(C'\fR with the same server parameter and the same instance will be returned, with all data preserved. .SH "SUBROUTINES/METHODS" .IX Header "SUBROUTINES/METHODS" .SS "new" .IX Subsection "new" .Vb 1 \& Create a new Test::Mock::Redis object. \& \& It can be used in place of a Redis object for unit testing. \& \& It accepts the "server" argument, just like Redis.pm\*(Aqs new. .Ve .SS "num_databases" .IX Subsection "num_databases" Redis ships with a default of 16 databases, and that's what this module handles by default. If you need to change that, do .PP .Vb 1 \& use Test::Mock::Redis num_databases => 21; .Ve .PP or at run-time .PP .Vb 1 \& Test::Mock::Redis::change_num_databases(21); .Ve .SH "PIPELINING" .IX Header "PIPELINING" See \*(L"\s-1PIPELINING\*(R"\s0 in Redis \*(-- most methods support the use of a callback sub as the final argument. For this implementation, the callback sub will be called immediately (before the result of the original method is returned), and \&\f(CW\*(C`wait_all_responses\*(C'\fR does nothing. Combining pipelining with \f(CW\*(C`multi\*(C'\fR/\f(CW\*(C`exec\*(C'\fR is not supported. .SH "TODO" .IX Header "TODO" Lots! .PP Not all Redis functionality is implemented. The test files that output \*(L"\s-1TODO\*(R"\s0 are still to be done. .PP The top of all test files [except 01\-basic.t] has the list of commands tested or to-be tested in the file. .PP Those marked with an \*(L"x\*(R" are pretty well-tested. Those marked with an \*(L"o\*(R" need help. Those that are unmarked have no tests, or are un-implemented. For example: .PP x \s-1AUTH \s0 <\-\-\- has some tests .PP o \s-1KEYS \s0 <\-\-\- only partially tested and/or implemented .PP .Vb 1 \& ZINTERSTORE <\-\-\- not tested (or maybe not implemented) .Ve .PP Beyond that, it would be neat to add methods to inspect how often keys were accessed and get other information that allows the module user to confirm that their code interacted with redis (or Test::Mock::Redis) as they expected. .SH "AUTHOR" .IX Header "AUTHOR" Jeff Lavallee, \f(CW\*(C`\*(C'\fR .SH "SEE ALSO" .IX Header "SEE ALSO" The real Redis.pm client whose interface this module mimics: .SH "BUGS" .IX Header "BUGS" Please report any bugs or feature requests to \f(CW\*(C`bug\-mock\-redis at rt.cpan.org\*(C'\fR, or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. .SH "SUPPORT" .IX Header "SUPPORT" You can find documentation for this module with the perldoc command. .PP .Vb 1 \& perldoc Test::Mock::Redis .Ve .PP You can also look for information at: .IP "\(bu" 4 \&\s-1RT: CPAN\s0's request tracker .Sp .IP "\(bu" 4 AnnoCPAN: Annotated \s-1CPAN\s0 documentation .Sp .IP "\(bu" 4 \&\s-1CPAN\s0 Ratings .Sp .IP "\(bu" 4 Search \s-1CPAN\s0 .Sp .SH "ACKNOWLEDGEMENTS" .IX Header "ACKNOWLEDGEMENTS" Salvatore Sanfilippo for redis, of course! .PP Dobrica Pavlinusic & Pedro Melo for Redis.pm .PP The following people have contributed to \fITest::Mock::Redis\fR: .IP "\(bu" 4 Ian Burrell .IP "\(bu" 4 Karen Etheridge .IP "\(bu" 4 Kevin Goess .IP "\(bu" 4 Neil Bowers .SH "LICENSE AND COPYRIGHT" .IX Header "LICENSE AND COPYRIGHT" Copyright 2011, 2012, 2013 Jeff Lavallee. .PP This program is free software; you can redistribute it and/or modify it under the terms of either: the \s-1GNU\s0 General Public License as published by the Free Software Foundation; or the Artistic License. .PP See for more information.