Page 274 - AngularJS权威教程
P. 274
254 第 19 章 测试
location.path('/definitely/not/a/_route');
rootScope.$digest();
expect(route.current.controller)
.toBe('HomeController')
});
要运行这些测试,需要确保Grunt服务器在运行:
$ cd myApp
$ grunt server
如果在应用文件中运行karma start karma.conf.js,能立刻在终端看到输出,如图19-3所示。
图19-3 单元测试路由
我们做了很多工作来建立路由测试,却只测试了一个路由地址。既然我们是为用户功能测试
流程的变化,可以把这些工作移到应用上,在端到端测试中更严格地测试它。
2. 端到端的路由测试
在端到端测试中,无须模拟Angular的任何部分:我们是在黑盒测试这个应用。用这种方式,
只需描述我们想要应用如何表现,并相应编写测试。
在编写端到端测试时,需要思考用户是如何在我们的应用中进行导航的。我们的测试应当是
可读的:把用户带到特定页面,描述他们在应用中应当有什么样的体验。
所有端到端测试的基准测试只有下面几行:
describe('E2E: NAME', function() {
// 我们的测试代码放在这里
});
就是这样。我们来使用browser() API方法在浏览器中修改iframe的源。
要测试index路由,我们要把浏览器指向index路由,然后确认地址也真的就在首页。
describe('E2E: Routes', function() {
it('should load the index page', function() {
browser().navigateTo('/#/');
expect(browser().location().path()).toBe('/');
});
});
要运行这个测试,需要确保Grunt服务器在运行: