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的情况下。
   253   254   255   256   257   258   259   260   261   262   263