用柏树测试Laravel微风身份验证
#php #laravel #cypress

这篇文章显示了一些示例,这些示例很容易添加到使用Laravel Breeze的任何Laravel项目中。

为了使用完整的示例,您需要使用Laracast/Cypress package

在这里登录示例:

请记住,Laravel的默认用户工厂设置了由工厂生成的用户密码作为“密码”:

describe('Authentication test', () => {
    it('tests a success manual authentication with the login form', () => {
        cy.visit(`/login`);

        cy.php(`
            App\\Models\\User::factory()->create(['email', 'john@doe.com']);
        `).then(user => {
            cy.get('input[type="email"]').type(user.email);
            cy.get('input[type="password"]').type('password');
        });

        cy.get('button[type="submit"]').click();

        cy.location('pathname').should('equal', '/dashboard');
    });
});

一些有趣的想法可能是:

测试HTTP状态代码

cy.request('http://localhost:8000/dashboard').then((response) => expect(response.status).to.eq(200));

测试中间软件

// visit a url
cy.visit('http://localhost:8000/dashboard');
// check the next url location
cy.url().should('match', /login);

有时您需要测试较大的工作流,例如注销,然后检查某些中间件是否有效...

cy.visit('/logout') // I got you cover, it would do the magic

检查一些内容

请记住,您应该避免测试可以逃脱的文本,也就是说,您可以在/dashboard URL中测试类似欢迎消息的内容。

cy.contains('Welcome');

甚至更好,请使用PHP方法或登录助手准确测试当前用户欢迎消息:

cy.login({ email: 'john@doe.com', name: 'John Doe' });
cy.visit('/dashboard').contains('Welcome Back, John Doe');

希望这个小示例有助于提供足够的指南来为您的应用程序创建自己的测试。