Page 258 - AngularJS权威教程
P. 258
238 第 19 章 测试
expect(message + "world").toEqual("hello world");
});
it('should say hello ari', function() {
expect(message + "ari").toEqual("hello ari");
});
});
我们也可以重置条件(例如,使用afterEach()函数清除数据库,或者通过模拟冲掉所有请
求)。与beforeEach()函数类似,它也带有一个参数:一个函数,会在每个细则跑完之后执行。
describe('A spec suite', function() {
var count;
afterEach(function() {
count = 0;
});
it('should add one to count', function() {
count += 1;
expect(count).toEqual(1);
});
it('should check for the reset value', function() {
expect(count).toEqual(0);
});
});
在嵌套的描述块中,这些beforeEach和afterEach方法是被串起来的,所以我们可以建立更
复杂的测试树,而无需重复代码。
19.11 端到端的介绍
做端到端测试时,我们会使用Angular场景运行器。Angular场景运行器模拟了用户交互,这
样我们可以更准确地评估应用的状态。
编写场景测试时,我们要描述应用在不同情境下应有的行为。就像在单元测试里,我们也用
Jasmine来建立期望和行为。
测试应用时,我们会直接使用场景运行器的API来控制浏览器。利用这个API,我们能通过
不同的动作操作浏览器,包括在输入框中输入数据,选择元素,导航页面,控制浏览器的流,
等等。
我们要使用的核心基础API是browser()方法,这个方法返回一个对象,为了控制浏览器,
可以在这个对象上面串一些方法。
场景运行器通过打开一个浏览器窗口,嵌入一个iframe的方式来运行。这个iframe就是Karme
运行应用测试,跟踪场景运行器成功或者失败结果的地方。
1. 导航页面
要在测试浏览器frame里面加载一个URL,我们使用navigateTo函数,它带有一个参数:要
加载的URL。
browser().navigateTo(url)
我们也可以通过调用一个方法取得一个URL的方式来动态加载这个URL。这个调用一般用于
我们在写测试或者检测某个操作的结果时,不知道目的URL的情况下。