特定のCancellationTokenSourceがメソッド呼び出しの実際のパラメーターとして使用されていることを確認しようとしています。
public void DataVerification(Object sender, EventArgs e)
{
_entity.PopulateEntityDataVerificationStage(_view.DataTypeInputs, _view.ColumnNameInputs, _view.InitialRow, _view.FinalRow, _view.CurrencyPair, _view.CsvFilePath, _view.ErrorLogFilePath);
//...
CancellationTokenSource tempCsvFileVerificationCancellation = new CancellationTokenSource();
_source.Source = tempCsvFileVerificationCancellation;
//Want to verify that TempCsvFileVerificationCancellation.Token is passed into the following method.
_verify.SetupCsvFileVerification(_entity, tempCsvFileVerificationCancellation.Token);
//...
}
以下は私のテストです:
[Test]
public void DataVerification_SetupCsvFileVerification_CorrectInputs()
{
Mock<IMainForm> view = new Mock<IMainForm>();
Mock<IUserInputEntity> entity = new Mock<IUserInputEntity>();
Mock<ICsvFileVerification> verify = new Mock<ICsvFileVerification>();
verify.Setup(x => x.SetupCsvFileVerification(It.IsAny<UserInputEntity>(), It.IsAny<CancellationToken>()));
CancellationTokenSource cts = new CancellationTokenSource();
Mock<ICancellationTokenSource> source = new Mock<ICancellationTokenSource>();
source.SetupSet(x => x.Source = It.IsAny<CancellationTokenSource>()).Callback<CancellationTokenSource>(value => cts = value);
source.SetupGet(x => x.Source).Returns(cts);
source.SetupGet(x => x.Token).Returns(cts.Token);
MainPresenter presenter = new MainPresenter(view.Object, entity.Object, verify.Object, source.Object);
presenter.DataVerification(new object(), new EventArgs());
verify.Verify(x => x.SetupCsvFileVerification(entity.Object, source.Object.Token));
}
エラーメッセージは次のとおりです。
少なくとも1回はモックでの呼び出しが必要ですが、実行されませんでした。x => x.SetupCsvFileVerification(.entity.Object、(Object).source.Object.Token)セットアップが構成されていません。
sourceで表されるクラスは次のとおりです。
public interface ICancellationTokenSource
{
void Cancel();
CancellationTokenSource Source { get; set; }
CancellationToken Token { get; }
}
public class CancellationTokenSourceWrapper : ICancellationTokenSource
{
private CancellationTokenSource _source;
public CancellationTokenSourceWrapper(CancellationTokenSource source)
{
_source = source;
}
public CancellationTokenSource Source
{
get
{
return _source;
}
set
{
_source = value;
}
}
public CancellationToken Token
{
get
{
return Source.Token;
}
}
public void Cancel()
{
_source.Cancel();
}
}
単体テストを実行すると、ctsにはTempCsvFileVerificationCancellationの値が割り当てられます。sourceのTokenプロパティは、Source.Tokenを返します。私が間違ったことをしたことについて途方に暮れています。
任意のポインタ/支援をいただければ幸いです。
ありがとう
編集