2017-01-30 4 views
0

私は、このような関数のようなEnumパラメータ型を受け入れる関数を単体テストしようとしています。型契約に違反することなくタイプ文字列を模倣する方法

function consumeEnumValue(value: MyEnumType) { 
    //do something 
} 

しかし、実際の列挙型をテストコードにインポートしたくない場合、架空の列挙型の列挙型列挙型を使用したいと考えています。以下は動作しません:

import { consumeEnumValue } from 'production-code.ts' 

enum FictionalEnum { 
    foo, 
    bar, 
} 

describe('consumeEnumValue',() => { 
    it('should run and have no type errors',() => { 
     expect(consumeEnumValue(FictionalEnum.foo)).toEqual(/* something */); 
    }); 
}); 

もちろんtypescriptですが、引数の型とパラメータの型が一致しないと文句を言い。

架空の値で列挙型をモックする方法はありますか?

+0

なぜ実際の列挙型を使用しないのですか?列挙型Xを取得するはずの関数をテストするのは意味がありませんが、テストで列挙型を取得しますY –

+0

@NitzanTomerあなたは絶対に正しいです。私はそれについて数分以上考えた後、同じ結論に達しました。私は最初に私のenumを嘲笑することが良い考えだった理由を説明する答えを掲示した。 – Brian

答えて

0

もう少し問題があると思うので、私のアプローチが理にかなっているとは思えません。

私の特定のケースでは、テスト対象の関数は、一意の識別子のセットとして列挙型を使用しますが、特定の識別子に対しては動作しません。たとえば、enum値に基づいて結果を生成するスイッチケースはありません。代わりに、enum値をキーとして使用して、2番目のパラメータとして渡されたマップにアクセスします。

一般的に、私は擬似列挙型で単体テストには意味がないと考えています。

関連する問題