21

コードをデバッグし、mockLessonplannerAFactory 作成の行を読むと、エラーが発生します。

インターフェイス モックにコンストラクター引数を渡すことはできません。

var mockSchoolclassCodeService = new Mock<ISchoolclassCodeService>();
var mockDateService = new Mock<IDateService>();
var mockLessonplannerAFactory = new Mock<ILessonplannerAFactory>(mockDateService.Object);
var mockLessonplannerBFactory = new Mock<ILessonplannerBFactory>(mockDateService.Object);

var service = new TimeTableService(mockUnitOfWork.Object, mockLessonplannerAFactory.Object, mockLessonplannerBFactory.Object, mockSchoolclassCodeService.Object);

私の TimeTableService は、インターフェイス タイプのインスタンスのみを受け入れます。しかし、mockLessonplannerAFactory と BFactory... は、コンストラクターに渡された IDateService も必要とします。

コードの何が問題になっていますか?

4

2 に答える 2

19

インターフェイスにはコンストラクターがないため、インターフェイスから作成されたモックには既定のコンストラクターがあります。具体的なクラスではなく、インターフェイスをモックしていることに注意してください。

「しかし、mockLessonplannerAFactory と BFactory は... コンストラクターに渡された IDateService も必要です。」

どちらもインターフェイスからモックされているため、コンストラクターはありません。モック クラスは、何も渡す必要のないデフォルトのコンストラクターを作成します。

于 2013-03-16T11:45:17.090 に答える
1

あなたが単純にやりたかったこと...

1) 通常のインターフェイス モックを作成します。

  var mockDateService = new Mock<IDateService>();

2)コンストラクターのパラメーターとして必要なものを受け入れるためのセットアップを行います。

mockDateService .Setup(s => s.ConstructorParam).Returns(constructorParamValue);
于 2021-05-29T10:35:43.227 に答える