2016-08-29 1 views
0

TypescriptのAngular 2(RC4)で単位テストを実装しています。テストするサービス(「計算」)は、他の多くのコンポーネント(「Bausparen」)を使用し、コンポーネント(「BausparenInput」)を使用します。すべてのコンポーネントは@Injectable()で宣言されています。角2単位テスト:Typemoqオブジェクトを挿入する

私は、Typemoqを使ってBausparenのような依存するコンポーネントを模擬し、テストを実行する前にそれらを注入しようとしました。とにかく、それは動作しません:

let calcInput = x => x.calc(TypeMoq.It.isAnyNumber(), TypeMoq.It.isAnyNumber()); 
let calcInputFormer = x => x.calc(TypeMoq.It.isAnyNumber(), TypeMoq.It.isAnyNumber(), TypeMoq.It.isAnyNumber()); 
let calcOutput = (y, m) => new CalcOutput(); 
let calcOutputFormer = (y, m, f) => new CalcOutput(); 
let bausparenMock = TypeMoq.Mock.ofType(Bausparen); 
bausparenMock.setup(calcInput).returns(calcOutput); 
bausparenMock.setup(calcInputFormer).returns(calcOutputFormer); 

beforeEach(() => { 
    addProviders([CalculationService, 
    { provide: Bausparen, useClass: bausparenMock }]); 
}); 

it('should return empty array when fromYear > toYear', 
    inject([CalculationService], (calculation: CalculationService) => { 
    let result = calculation.getValues(6, 2017, 6, 2016); 
    expect(result.length).toBe(0); 
})); 

をモックするクラスの署名はこれです::機能を説明

FAILED TESTS: 
Calculation Service 
× should return empty array when fromYear > toYear 
    PhantomJS 2.1.1 (Windows 7 0.0.0) 
factory 
factory 
resolveReflectiveFactory 
resolveReflectiveProvider 
[email protected][native code] 
[email protected][native code] 
[email protected][native code] 
[email protected][native code] 
Call 
map 
resolveReflectiveProviders 
resolve 
resolveAndCreateChild 
createInjector 
execute 

Jasminesの内部では、コードは次のようになります

class Bausparen implements Calculation { 
    calc(year: number, month: number, formerAmount?: number): CalcOutput {...} 
} 

エラーメッセージは実際には何も教えてくれません。私のモックのセットアップやインジェクションに問題がある場合でも、私は得られません。誰も以前に同様のエラーがあったのですか?

答えて

1

あなたは交換する必要があります。

{ provide: Bausparen, useClass: bausparenMock } 

をして:

{ provide: Bausparen, useValue: bausparenMock } 

モッククラス

がまた魅力のようなts-mockito

+0

作品を見て値ではありませんので! –

関連する問題