Reputation: 15070
I'm using Codeception for unit, functional, and acceptance tests of my Laravel 4 PHP application.
My unit tests look this:
use Codeception\Util\Stub;
class ExampleTest extends \Codeception\TestCase\Test
{
public function testExample()
{
$example = true;
$this->assertSame($example, true);
}
}
My functional tests look like this:
use \TestGuy;
class ExampleCest
{
public function example(TestGuy $I)
{
$I->amOnPage('/auth/login');
$I->see('Sign in');
}
}
But I also want to use PHPUnit assert methods in my functional tests. But when I try to, I get this error:
Call to undefined method ExampleCest::assertSame()
How do I use PHP assert methods in a Codeception functional test?
Upvotes: 14
Views: 10348
Reputation: 1
I was in the same problem and somehow figured it out. Here I am going to share what I did to achieve my goal. Step 1: Install Codeception assert module OR simply add the following module to composer.json file and then update composer.
"codeception/module-asserts": "^3.0",
Step 2: Then it requires to enable the assert module by adding the following module in the *.suite.yml file.
modules:
enabled:
- \Codeception\Module\Asserts:
And finally build Codeception once again by codecept build
OR codeception build
whichever alias works for you.
Upvotes: 0
Reputation: 101
In Codeception 4 just add the Asserts Module:
modules:
enabled:
- \Codeception\Module\Asserts
to your suite.yml config file and run codeception build
Upvotes: 5
Reputation: 3893
Since Codeception 2.1 (not 2.0) you can use it like the other asserts with:
$I->assertSame($expected, $actual, $message);
But don't forget to enable the Asserts
module in your config - e.g.:
class_name: UnitTester
modules:
enabled: [ Asserts ]
Please note: You might need to change your configuration when upgrading to 2.1 - see upgrade instructions: http://codeception.com/06-19-2015/codeception-2.1-rc.html
Upvotes: 34
Reputation: 31
Another workaround can be to use Helper Methods in test suite.
For example for assertSame()
method
class ExpectedHelper extends \Codeception\Module
{
protected $test;
function _before(\Codeception\TestCase $test) {
$this->test = $test;
}
function assertSame($expected, $actual, $message = '')
{
$this->test->assertSame($exception, $actual, $message);
}
}
where ExpectedHelper being the test suite Helper name (eg: UnitHelper, FunctionalHelper) which should be under _support folder
and you can use it in your test as $I->assertSame('12340','12340');
Upvotes: 2