Download the PHP package nopolabs/mock-with-expectations without Composer
On this page you can find all versions of the php package nopolabs/mock-with-expectations. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nopolabs/mock-with-expectations
More information about nopolabs/mock-with-expectations
Files in nopolabs/mock-with-expectations
Package mock-with-expectations
Short Description Helper trait for phpunit testing
License MIT
Informations about the package mock-with-expectations
MockWithExpectations
This package provides a more concise notation for building mock objects
in a sub-class of PHPUnit\Framework\TestCase
.
I like testing with mocks and expectations. It lets me test my code without having to test the components with which it interacts. Those components need to be tested too, but I want my tests focused on one thing at a time.
Consider this refundOrder()
function:
Here is a PHPUnit test for refundOrder()
:
And using MockWithExpectationsTrait
:
Refactoring refundOrder()
:
And using MockWithExpectationsTrait
:
Using MockWithExpectationsTrait
reduces the amount of boilerplate code
needed to write the tests. In addition it uses the at()
invocation
matcher to ensure that the methods are called in the expected order. The
original test does not check the order in which the methods are called.
The way I look at it is this:
testRefundOrder()
is testing an external API exposed by OrderManager
.
In turn OrderManager
composes functions method calls to several objects
to implement the refundOrder()
function. The refactoring organizes these
calls as a single internal API. In this example the internal API is
implemented as three protected methods on OrderManager
. These methods
are tools that help OrderManager
to do its job of order management.
As the internal order management API grows it might get moved to its
own OrderManagement
class, e.g.:
Expectations Syntax
method
params
result
throws
invoked
Using MockWithExpectationsTrait
composer require
composer require nopolabs/mock-with-expectations
methods
createMockWithExpectations
Creates a partial mock object and adds the provided expectations.
addExpectation
Adds an expectation on a mock object.
addExpectations
Adds expectations on a mock object.
All versions of mock-with-expectations with dependencies
phpunit/phpunit Version ^6.0
roave/security-advisories Version dev-master