在运行时在角度应用程序中的浏览器中运行测试

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

我正在构建一个角度应用程序,我想在其中获取用户 JavaScript 代码输入(例如函数),运行单元测试以验证输入代码是否正确,并在测试通过或失败时向用户显示。我使用角度 CLI 运行单元测试,但在这里我想在用户使用应用程序时在运行时运行测试。它类似于 freecodecamp 如何运行单元测试来验证用户代码输入。我想知道我该怎么做,或者是否有任何支持它的框架/库。

javascript angular jasmine karma-runner
2个回答
0
投票

让我们从浏览器中的运行测试开始,您可以使用 smth https://stackblitz.com/edit/jasmine-in-angular?file=src%2Fmain-testing.ts

  1. 所以你为运行测试创建额外的入口点。
  2. 然后在您的主应用程序中创建文本区域并允许以文本形式输入测试。
  3. 现在创建指向您新入口点的 iframe 并将您的文本发送到那里,构造函数并在里面运行它
    it()

0
投票

你需要在你的单元测试中做的是实际实例化组件并使用 web DOM 对象和事件,如

document.getElementById
等。

或者,您可以使用更容易的开源库。您可能会查看的一个库是 testing-library/angular。虽然不那么受欢迎,但我的研究得出结论,它会保留下来,并且可能最接近您正在寻找的东西。

就个人而言,我更喜欢ng-mocks。正确使用它运行单元测试so比普通角度快得多即使它在运行时模拟依赖关系因为它模拟整个模块,这是有截止日期的程序员不会......不能......费心去做的......但你没有问过这个。针对您的问题:

ngNocks.click
ngMock.input
让它变得简单。 (如果您的测试需要,不要忘记调用
fixture.detectChanges()
来触发组件重新渲染。)

两者真的不想竞争......测试库专注于你所问的问题,ng-mocks 专注于其他事情。然而,我的经验是,尽管 ng-mocks 中的 UI 辅助函数感觉像是事后才加入的,但它们很好地满足了我的需求,以至于我从来没有觉得有必要去别处寻找。

或者,如果您正在寻找的不仅仅是 unit 测试,您可能想要查看像 selenium 这样的 Web 自动化软件来进行完整的端到端测试。

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