2

为了测试 Vue2,我使用testcafe。运行测试的命令

testcafe firefox test/e2e/specs/ --app \"npm run dev\"
--app-init-delay 20000 -S -s test/e2e/screenshots

测试文件

import { ClientFunction, Selector } from 'testcafe';
const devServer = require('../../../webpack/devServer');

fixture(`Getting Started`)
// Load the URL your development server runs on.
    .page(`http://localhost:${devServer.port}/#/login`);

test('test login', async t => {
    const userSelector = await new Selector('.login-squere input[type="text"]');
    const passSelector = await new Selector('.login-squere input[type="password"]');
    const logiIn = await new Selector('.login-squere button');
    await t.typeText(userSelector, 'manager')
        .typeText(passSelector, 'manager')
        .click(logiIn);
});

我希望在 .click(logiIn) 站点之后路由到/#/projects,但是我添加到测试中没有任何反应

await t.typeText(userSelector, 'manager')
        .typeText(passSelector, 'manager')
        .click(logiIn)
        .navigateTo(`http://localhost:${devServer.port}/#/projects`);

再次没有结果。如果我将.page设置为/#/projects,它将被重新路由到登录。

所以我只能测试登录页面,因为我不能让 testcafe 路由 Vue 到下一个视图。


仅当登录单击后我们有 ajax 时才会出现此问题。TestCafe 没有请求处理程序,所以最好为 e2e 尝试其他东西

4

1 回答 1

1

试试这个:

test('login', async t => {
  await login(t);
});

并将您的代码分成一个新函数:

const login = async t => {
  const userSelector = await new Selector('.login-squere input[type="text"]');
    const passSelector = await new Selector('.login-squere input[type="password"]');
    const logiIn = await new Selector('.login-squere button');
    await t.typeText(userSelector, 'manager')
        .typeText(passSelector, 'manager')
        .click(logiIn);
};
于 2018-05-31T13:39:18.347 回答