问题
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class MemberRegTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$response = $this->call('GET', '/addmember');
$response = $this->action('GET', 'MemberController@addmember');
}
}
After testing gives me error
Error: Call to undefined method Tests\Feature\MemberRegTest::action()
What i do wrong?
回答1:
There was an action
method inside TestCase
back to Laravel 4.x. This method has been replaced for new ones in different classes and packages. (You can confirm this reviewing the Laravel 5.6 TestCase class)
For the latest versions of Laravel, If you are trying to test a HTTP Request you could do:
$response = $this->json('GET', 'api/addmember');
$response->assertStatus(200) // or whatever you want to assert.
Now if you want to do browser tests, you should use the official Laravel Dusk. This package has very cool and useful methods to simulate user interactions with your site, as easy as this:
$this->browse(function ($browser) use ($user) {
$browser->visit('/login')
->type('email', $user->email)
->type('password', 'secret')
->press('Login')
->assertPathIs('/home');
来源:https://stackoverflow.com/questions/49372467/undefined-action-in-phpunit