如何通过使用Testcafé的TestController的模拟类创建单元测试?

问题描述 投票:0回答:1

我有一个使用typemoq模拟类的测试,但我对其功能之一有疑问。在此函数中,我调用Testcafé的TestController来使用特定的角色,但它不能按预期方式工作。

我可以做些什么以便可以在Testcafé测试之外使用TestController的实例?

以下是示例测试:

import {IMock} from "typemoq/Api/IMock";
import {Mock} from "typemoq";
import {Role, t} from "testcafe";
import { expect } from "chai";

class TestClass {
  public static async useRole(role: Role): Promise<boolean> {
    await t.useRole(role);
    return true;
  }
}

describe("test mock using Testcafé's TestController", () => {
  it('should switch role', async () => {
    const role = Role.anonymous();
    const mockedClass: IMock<typeof TestClass> = Mock.ofType<typeof TestClass>();

    mockedClass.setup(x => x.useRole(role)).returns(async (role) => {
      return TestClass.useRole(role);
    });

    const result = await mockedClass.object.useRole(role);

    expect(result).to.eq(true);
  });
});

调试时应该得到这个:

enter image description here

提前感谢:)

testing automation automated-tests e2e-testing testcafe
1个回答
0
投票

仅当打开浏览器并且正在运行TestCafe测试时,才能使用TestCafe函数,因此它们将无法在自定义代码中使用。

useRole方法(和大多数其他方法)也仅在打开浏览器时有效,因为浏览器和服务器代码在此方法内交互。 useRole旨在从客户端获取Cookie和本地存储。因此,即使您能够模拟useRole方法,它也会失去其逻辑中最重要的部分。

© www.soinside.com 2019 - 2024. All rights reserved.