如何测试 AngularJS 服务中的循环

How to test a loop inside an AngularJS service

我正在尝试测试服务,但我不知道如何测试内部循环。是否可以使用 host.lenght===1 以不同于模拟 url that return host.length=1 的方式测试用例。我是否必须在服务中调用 Fake 我的所有代码来测试它?另外如何测试isNaN? 这是我的代码:

if (host.length === 1 || !isNaN(host[host.length - 1])) {

     name = a.hostname;

} else {

     if (host[0] === "www") {
          slice = 1;
     }
     name = host.slice(slice, host.length - 1).reverse().join(" ");
}

jsfiddle Demo

在这种情况下,使用 URL 看起来最简单,它会给您这种行为。在我看来,这也将是一个更好的测试,因为它将实际测试代码的意图,而不是仅仅确保调用某些方法。毕竟,这段代码是为了应对不同类型的 URL 而编写的,为什么不完全用它来测试它们呢?

您已经对此 url 进行了测试:'http://angular.com/about'。对于您正在谈论的情况,您可以使用 'http://angular/about' 然后 'http://www.angular.com/about' 来测试剥离 www. 部分的代码。