小编har*_*pdx的帖子

使用@Input()进行Angular2单元测试

我有一个@Input()在实例变量上使用注释的组件,我正在尝试为该openProductPage()方法编写单元测试,但是我在设置单元测试方面有点迷失.我可以将该实例变量公之于众,但我认为我不应该诉诸于此.

如何设置我的Jasmine测试以便注入模拟产品(提供?)并且我可以测试该openProductPage()方法?

我的组件:

import {Component, Input} from "angular2/core";
import {Router} from "angular2/router";

import {Product} from "../models/Product";

@Component({
    selector: "product-thumbnail",
    templateUrl: "app/components/product-thumbnail/product-thumbnail.html"
})

export class ProductThumbnail {
    @Input() private product: Product;


    constructor(private router: Router) {
    }

    public openProductPage() {
        let id: string = this.product.id;
        this.router.navigate([“ProductPage”, {id: id}]);
    }
}
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine typescript angular angular-test

53
推荐指数
4
解决办法
5万
查看次数

EmptyError:顺序没有元素

我正在将我的Angular2应用程序从2.0.0升级到2.3.0,我遇到了以下错误.任何想法为什么?我看到了另一篇文章(Angular 2.0.1 Router EmptyError:序列中没有元素),但在尝试之后,问题仍然存在.是什么导致这个错误?

Error: Uncaught (in promise): EmptyError: no elements in sequence
Error: no elements in sequence
    at EmptyError.ZoneAwareError (zone.js:672)
    at new EmptyError (EmptyError.ts:13)
    at FirstSubscriber._complete (first.ts:161)
    at FirstSubscriber.Subscriber.complete (Subscriber.ts:122)
    at Subject._subscribe (Subject.ts:109)
    at Subject.Observable.subscribe (Observable.ts:98)
    at Observable._subscribe (Observable.ts:158)
    at Observable.subscribe (Observable.ts:98)
    at Observable._subscribe (Observable.ts:158)
    at FirstOperator.call (first.ts:82)
    at Observable.subscribe (Observable.ts:96)
    at Object.subscribeToResult (subscribeToResult.ts:32)
    at MergeAllSubscriber._next (mergeAll.ts:82)
    at MergeAllSubscriber.Subscriber.next (Subscriber.ts:95)
    at MapSubscriber._next (map.ts:80)
    at resolvePromise (zone.js:475) [angular]
    at resolvePromise (zone.js:460) [angular]
    at /libs/zone.js/dist/zone.js:509:17 [angular]
    at …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

34
推荐指数
7
解决办法
3万
查看次数

NG2 RC5:不推荐使用HTTP_PROVIDERS

因此,在Angular2的RC5版本中,他们弃用HTTP_PROVIDERS并引入了HttpModule.对于我的应用程序代码,这工作正常,但我正在努力在我的Jasmine测试中进行更改.

这是我目前在我的规范中所做的事情,但由于不推荐使用HTTP_PROVIDERS,我现在应该做些什么呢?有什么我需要提供而不是HTTP_PROVIDERS?在RC5世界中这样做的正确方法是什么?

beforeEach(() => {
  reflectiveInjector = ReflectiveInjector.resolveAndCreate([
    HTTP_PROVIDERS,
    ...
  ]);

  //other code here...
});

it("should....", () => { ... });
Run Code Online (Sandbox Code Playgroud)

angular2-testing angular

13
推荐指数
1
解决办法
9389
查看次数

Angular2 RC.1 - 将路由器注入单元测试

我正在编写我的ng2测试,我遇到了一些麻烦,将Router注入我的组件进行测试.我的组件的构造函数只接受一个参数 - private router: Router.

但是,当我运行我的测试用例时,我在尝试注入路由器时遇到错误.我究竟做错了什么?谁能提供一个有效的例子?

我正在使用angular2-RC.1

这是我得到的错误: No provider for ComponentResolver! (Router -> ComponentResolver)

这是我的测试:

import {describe, it, expect, beforeEach, afterEach, beforeEachProviders, inject} from "@angular/core/testing";
import {ReflectiveInjector, provide} from "@angular/core";
import {HTTP_PROVIDERS} from "@angular/http";
import {Router, ROUTER_PROVIDERS} from "@angular/router";
import {ROUTER_FAKE_PROVIDERS} from "@angular/router/testing";
import {Location} from "@angular/common";
import {SpyLocation} from "@angular/common/testing/location_mock";
import {Observable} from "rxjs/Observable";
import {MyComp} from "./MyComp";

describe("MyComp", () => {

  let injector: ReflectiveInjector,
      myComp: MyComp,
      router: Router;

  beforeEach(() => {

    injector = ReflectiveInjector.resolveAndCreate([         
      HTTP_PROVIDERS,
      ROUTER_FAKE_PROVIDERS, …
Run Code Online (Sandbox Code Playgroud)

jasmine angular2-routing angular

5
推荐指数
1
解决办法
3445
查看次数