私はnj4xを使用していますが、次のような読み込みフィールドを持つクラスがあります。単体テストの読み込みフィールドを模擬/オーバーライドする方法
public class MarketInformation
{
public readonly double ASK;
public readonly double BID;
public readonly double DIGITS;
public readonly double EXPIRATION;
public readonly double FREEZELEVEL;
}
私はこれらのクラスを書くクラスとメソッドの単体テストを書いています。分離/嘲笑のために私はNsubstituteとMicrosoftFakes(主にシム)を使用しています。私はこれらのフィールドをオーバーライドしたいので、メソッドで呼び出されたときにテスト用に予測可能な結果が得られます。 私はこのクラスのシムを生成しましたが、それは私に提供されるすべてがコンストラクタであり、今でもそれを初期化できるようになりました。このクラスの外側からこれらのフィールドを設定する方法はありますか?
私はモック/偽物などについてはあまり知識がありませんが、モッククラス内のフィールド*に*ハードコードされた予測可能な値を設定するというアイデアはありません。つまり、渡す必要はありませんそれを外部から割り当てたり割り当てたりします。モックは、実際のクラスが実装されているのと同じように、あなたが嘲笑している抽象化の実装になっているはずです。 –
@ rory.apモックを実装するのは別のアイデアですが、私はモックとアイソレーションのためのフレームワークを使用しています。モックを実装するには、抽象クラスまたはインタフェースクラスが必要です。ただし、ここでは利用できません。 –
モックできるインターフェイスを作成する必要があります。メンバーは「仮想」である必要があります。 (NS代理はクラスの仮想メンバでしか動作できないので、クラス内の非仮想コードは実際に実行されます!)[参照](http://nsubstitute.github.io/help/creating-a-substitute/) – NtFreX