Moqを使用して、工場の単体テストと、その後の製品の実行を行っています。
(レポートパラメータをParameterAlgorithmFactory
として計算するアルゴリズムを返しますIVisibilityParameterAlgorithm
) と、これらのそれぞれを呼び出すファクトリ内のメソッドがありますExecute()
。
これをテストするために、次のような単体テストを作成しました。
//Verfiy that execute is called on all algorithms produced by factory
[TestMethod]
public void ParameterAlgorithmFactory_ReturnedAlgorithm_ExpectExceuteCalled()
{
var mockFactory = new Mock<IParameterAlgorithmFactory>();
var parameterAlgorithm = new Mock<IVisibilityParameterAlgorithm>();
mockFactory.Setup(x => x.Create(LineType.Adjustment)).Returns(parameterAlgorithm.Object);
new ReportParameters().CreateParameters(new DataSet(), mockFactory.Object);
parameterAlgorithm.Verify(x=> x.Execute(new DataSet()));
}
ご覧のとおりparameterAlgorithm
、モック ファクトリからモック アルゴリズム ( ) を返しています。これがExecute()
呼び出されたことを確認したいと思います。
しかし、私は一貫して得ています:
Moq.MockException: モックでの呼び出しが少なくとも 1 回期待されていましたが、実行されませんでした: x => x.Execute(new DataSet())
デバッグして、行が編集されているのを見ることができますが。Execute()
おそらく、工場でやりすぎている(アルゴリズムを返して実行している)か、Moqを間違った方法で使用していますか?
このテストの失敗の原因について、フィードバックをお待ちしております。