2017-03-22 18 views
1

私は、angle2プロジェクトでジャスミンを使用しており、テスト用のカスタムマッチャーの作成には問題があります。私は比較的複雑な2つのオブジェクトを比較できるようにしたい。問題を解決すると主張しているthis articleが見つかりましたが、単にジャスミンのMatchersオブジェクトの新しいメソッドを認識しないことを示すタイプスクリプトエラーが発生します。関連するコードは、このです:Typescriptを使用してカスタムジャスミンマッチャーを作成します。

declare module jasmine { 
    interface Matchers { 
     toBeNumeric(): void; 
    } 
} 

Another articleが同じエラーを与える同様の、しかしわずかに異なる解を与えます。

declare namespace jasmine { 
    interface Matchers { 
     toHaveText(expected: string): boolean; 
    } 
} 

私はこの

let m: jasmine.Matchers = expect(someSpy.someMethod).toHaveBeenCalled(); 

を試してみましたが、このエラーました:

Type 'jasmine.Matchers' is not assignable to type 'jasmine.Matchers'. Two different types with this name exist, but they are unrelated.

declare namespace jasmine文が新しいjasmine名前空間を作成するのではなく、既存のものを拡張していることを示しているようです。

どのように私は私の独自のmatcherを作成することができますか?

答えて

2

基本的には、2番目の例(「declare namespace」)は、マッチャのロジックを他の場所に取り入れる方法です。

https://github.com/fluffynuts/polymer-ts-scratch/tree/5eb799f7c8d144dd8239ab2d2bcc72821327cb24/src/specs/test-utils/jasmine-matchers私はJasmineのマッチャーとタイピングを書いています。技術的には実際のマッチャーをJavascriptで書いただけで、ロジックファイルは.tsという名前でプロセスを構築する。

@types/jasmineをインストールして最新の状態に保つ必要があります。

@types/jasmineのさまざまなバージョンでは問題が発生する可能性があります。具体的には、上記のリンクは、すべての.d.tsファイルを破損したタイプパラメータ(Matchers<T>)を持つMatchersタイプをJasmineタイプが導入したときです。

+0

ありがとう@daf - 私はあなたのパターンを模倣し、実行時に動作しますが、タイプスクリプトは 'TS2339:Property 'toEqualWithoutSymbol'がタイプ 'Matchers 'に存在しません。ファイルは確実にインクルードされます(typescriptがそれを実行するため)。 – kross

+0

私は余分なトリプルスラッシュの指示の束が私に誤ったエラーを与えていたことを考え出しました。私は古いプロジェクトを掃除し、それらのエラーは消え去った。このサンプルプロジェクトは素晴らしいです – kross

関連する問題