Page 270 - AngularJS权威教程
P. 270

250  第 19 章  测试


                 第二种形式能让我们设置一个请求处理程序,请求成功执行之后会执行它。这种形式不返回
             数据,它返回的是一个函数,能返回一个包含响应状态代码、响应数据和响应头的数组。

                 // ...
                 $httpBackend.expectGET("/v1/api/current_user")
                   // 响应一个200状态代码
                   // 还有主体“success”
                   .respond(function(method, url, data, headers) {
                     return [200, "DATA", {"header1": "Header1"}];
                   });
                 4. when

                 $httpBackend也有when方法,与expect方法不同,它压根就没有对请求创建预期。实际上,
             它的目的主要是给应用创建一个假的后端,返回假数据。

                 不同于预期,使用when()时,每个匹配URL的请求都会被一条when定义处理。此外,用expect
             时,响应不是必须的,但用when时响应必须有。
                 如果要建立对所有测试通用的后端定义,那么使用when()方法是非常棒的。(例如,当测试
             一个使用了resolve属性的控制器时,它会依赖于外部数据的加载。)

                 when()函数带有两个必选参数和两个可选参数。
                  method:字符串HTTP方法,就像"GET"或者"POST"。
                  url:期望调用的HTTP URL。
                  data(可选):HTTP请求的主体,或者是个函数,接受一个data字符串并且在data符合
                   预期时返回true,或者是一个用JSON格式发送HTTP主体的JavaScript对象。
                  headers(可选):HTTP头或者函数,会接受header对象,并且在headers匹配预期时返
                   回true。
                   // ...
                    $httpBackend.when('GET', "/v1/api/current_user")
                      // 响应一个200状态代码
                      // 还有主体“success”
                      .respond(200, 'success');
                 类似于expect方法,我们也有同样的帮助方法让when的使用更具描述性。

                 whenGET()为GET方法创建了一个新的后端定义,whenGET()带有两个参数。
                  url:一个HTTP URL。
                  headers(可选):HTTP头。

                   // ...
                   $httpBackend.whenGET("/v1/api/current_user")
                     .respond(200, {userId: 123});
                 whenHEAD()为HEAD方法创建了一个新的后端定义,whenHEAD()带有两个参数。

                  url:一个HTTP URL。
                  headers(可选):HTTP头。

                    // ...
                   $httpBackend.whenHEAD("/v1/api/current_user")
                     .respond(200);
   265   266   267   268   269   270   271   272   273   274   275