The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Venus::Role::Mockable - Mockable Role

ABSTRACT

Mockable Role for Perl 5

SYNOPSIS

  package Example;

  use Venus::Class 'with';

  with 'Venus::Role::Mockable';

  sub execute {
    [1..4];
  }

  package main;

  my $example = Example->new;

  # my $mock = $example->mock(execute => sub {
  #   my ($next) = @_;
  #
  #   return sub {
  #     [@{$next->()}, @_]
  #   }
  # });

  # sub { ... }

DESCRIPTION

This package provides a mechanism for mocking subroutines.

METHODS

This package provides the following methods:

mock

  mock(string $name, coderef $code) (coderef)

The mock method mocks the subroutine specified using the callback given. The coderef provided will be passed the original subroutine coderef as its first argument. The coderef provided should always return a coderef that will serve as the subroutine mock.

Since 2.32

mock example 1
  package main;

  my $example = Example->new;

  my $mock = $example->mock(execute => sub {
    my ($next) = @_;

    return sub {
      [@{$next->()}, @_]
    }
  });

  # sub { ... }

  # $example->execute;

  # [1..4]

  # $example->execute(5, 6);

  # [1..6]

AUTHORS

Awncorp, awncorp@cpan.org

LICENSE

Copyright (C) 2022, Awncorp, awncorp@cpan.org.

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.