我担心有人会提出我的问题,但我找不到令人满意的问题(也许是因为我在Angular 2+世界中非常有限,而且我理解错误了。)
据我所知,在完成了几个Hello World之后,很少有YouTube演示观看了:
ng test:
xxx.compnent.spec.ts
运行,并在浏览器中显示类似于JUnit的最终报告ng e2e:
您在考虑嵌套用户事件的情况下编写测试
eg. page.navigateTo();
page.getParagraphText()
.then(msg => expect(msg).toEqual('Welcome to app!!'))
.then(msg => expect(msg).toEqual('xxx'))
.then(done, done.fail);
使用量角器执行端到端测试主要是在部署应用程序后的一种预生产环境
Theoracly说,第二个是针对端到端的,重点是模拟最终用户完成的整个流程。
希望,直到这里是正确的,我想知道幕后发生了什么真正使他们与众不同。我不想比较哪个更好但是我肯定错过了一些点,因为我使用完全相同的想法创建了一些测试,并且我通过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");
});
...
我重读了我读过“量角器在测试执行期间提供等待/睡眠行为”的内容,但是当我看到没有量角器完成的测试时,我无法看到这个聚合值的位置能够模拟最终用户。只要您对测试进行编码以完成与最终用户完全相同的流程,它将与Angular Cli创建的e2e文件夹中的e2e测试建议相同。
如果我的研究驱使我按照上面的说法正确理解,唯一真正的区别就是我作为开发人员组织我的测试的方式。幕后没有任何真正不同的事情发生。
同样,我希望将此视为有关遗嘱目的的澄清问题:无意在此处比较框架。
答案 0 :(得分:29)
你正走在理解所有这一切的好路上。
您正在使用jasmine框架编写测试并将它们定义为套件并期望您可以测试的结果,但主要的是您实际上正在使用karma启动器直接在浏览器上执行测试。这是在角应用程序中正常配置。
这意味着有一台服务器运行测试,就是这样。您使用自己的值进行测试,并检查您的组件是否正常工作。
目的是检查单个组件(单元测试)或多个模块/组件(集成测试),单个功能/小型工作流程按预期正常工作,没有副作用。
Protractor是Angular和AngularJS的端到端测试框架 应用。量角器针对运行的应用程序运行测试 在真实的浏览器中,与用户进行交互。
在这里,您编写的测试将充当用户。这意味着您的应用程序在浏览器中运行,另一个程序将针对您的应用程序运行测试,模拟用户交互。
这非常重要,因为这意味着两件事:
量角器的目标是验证应用程序中的完整操作工作流程。例如,我将为我的登录组件编写单元测试,为我的登录服务编写单元测试,为我的整个模块编写集成测试以及我需要测试的任何行为取决于几个组件/服务。完成后,我将在稍后编写一个完整的端到端测试,该测试将在我的应用程序中验证我的整个身份验证过程。
请记住,有一个对于测试很重要的比例是非常符合逻辑的:
为什么?因为如果您对许多组件进行了正确的单元测试,则无需在端到端测试中再次测试。
结论:
<强> N.B。 :还要注意这些要点:
希望这有帮助。