私はこのテスト事業に少し新しく、Moqライブラリを使用しています。私はIt.Is()メソッドの使用について不思議です。私はそれを使用すべきですか?<T>()のテストパラメータですか?
は、私がテストの下に置くしたいのですが、私はクラスを持っていると言う:
public class ZeroChecker
{
public bool IsNotZero(int myInt)
{
return myInt != 0;
}
}
は、だから私はテストに対応するクラスを作る:
public class ZeroCheckerTest
{
[Fact]
public void IsNotZero_ReturnsTrue_WhenInputIsNotZero()
{
//Arrange
var myInt = It.Is<int>(i => i != 0);
ZeroChecker target = new ZeroChecker();
//Act
bool actual = target.IsNotZero(myInt);
//Assert
Assert.True(actual);
}
}
しかし、私のテストが失敗しました!デバッガを見ると、myIntがゼロに設定されていることがわかります!
だから私はどちらかのことを検討している:)
1私は馬鹿だし、これは1がIt.Isを(使うべきかではありません)
2)バグが部品番号
にありますどちらの場合でも、上記のシナリオをテストするにはどうすればいいですか? [InlineData()]
に切り替えて、非ゼロのintをほんの一握り投げてください。
Moqについてはわかりませんが、 'It.Is <> T()'のドキュメントにあるすべての例は 'Setup'クラスを通っています。これは模擬シナリオを初期化するメカニズムのようです。あなたはそのように「それ」を使用しているようには見えないので、はい、あなたはそれを正しく使用していない可能性があります。 –
ここでMoqをなぜ使用しているのかは不明です。あなたが嘲笑しようとしていることは何と信じていますか、なぜですか?はい、パラメータ化されたテストを使用する必要があるように聞こえますが、モッキングが達成しようとしていることについても学びます。なぜそれが不適切であるのかを知ることができます。 –
オプション(1)です!回答ありがとう。 – bchilders