我担心有人接近我的问题,但我找不到一个满意的问题(可能是因为我在Angular 2+世界中非常有限,我理解了一些错误).
据我所知,在《Hello World》的制作和YouTube演示的观看很少之后:
ng测试:
- 你用Jasmine语言写测试
- 您可以使用Karma在许多可用的浏览器上测试您的测试
- 您可以执行单元测试或集成测试
- 所有
xxx.compnent.spec.ts
次运行后,类似于JUnit的最终报告将显示在浏览器中
Ng e2e:
- 你用Jasmine语言写测试
- 您可以使用Karma在许多可用的浏览器上测试您的测试
-
编写测试时,要考虑嵌套用户事件
eg. page.navigateTo(); page.getParagraphText() .then(msg => expect(msg).toEqual('Welcome to app!!')) .then(msg => expect(msg).toEqual('xxx')) .then(done, done.fail);
主要是在将应用程序部署到一种预生产环境之后,使用 protractor 执行端到端测试
- 将触发e2e文件夹下的测试,并在命令行控制台中打印结果
理论上说,第二个是特定于端到端的,重点是模拟最终用户完成的整个流程.
希望,直到这里是正确的,我想知道什么是幕后发生的,真正使他们不同.我不想比较哪一个更好,但我确实忽略了一些要点,因为我使用最终用户完全相同的 idea 创建了一些测试,并通过ng测试触发了它.
例如:
...
it('should display the modal when `create Paste` is clicked', () => {
let createPasteButton = fixture.debugElement.query(By.css("button"));
//create a spy on the createPaste method
spyOn(component,"createPaste").and.callThrough();
//triggerEventHandler simulates a click event on the button object
createPasteButton.triggerEventHandler('click',null);
//spy checks whether the method was called
expect(component.createPaste).toHaveBeenCalled();
fixture.detectChanges();
expect(component.showModal).toBeTruthy("showModal should now be true");
expect(element.innerHTML).toContain("source-modal");
});
...
我记得我读过类似" protractor 在测试执行期间提供等待/睡眠行为"的内容,但当我看到在没有 protractor 的情况下完成测试时,我看不出这个聚合值在哪里,也无法模拟最终用户.只要您将测试编码为与最终用户完成的流程完全相同,它将与Angular Cli创建的e2e文件夹下的e2e测试建议相同.
如果我的研究促使我正确理解上面的内容,那么唯一真正的区别就是我作为开发人员组织测试的方式.在幕后发生的事情并没有什么不同.
再一次,我希望将此视为澄清问题的目的:这里根本没有比较框架的意图.