Я хочу, чтобы модульный тест, который проверяет, что 2 вызова функций происходят в правильном порядке. В этом примере первая функция шифрует файл и сохраняет его в файловой системе, а вторая функция отправляет зашифрованный файл стороннему процессору (через FTP).Проверка порядка вызова функций в модульном тесте
Я использую NSubstitute как макет рамки и FluentAssertions, чтобы помочь в проверке теста. Не похоже, что это можно сделать с NSubstitute из коробки.
public void SendUploadToProcessor(Stream stream, string filename)
{
var encryptedFilename = FilenameBuilder.BuildEncryptedFilename(filename);
FileEncrypter.Encrypt(stream, filename, encryptedFilename);
FileTransferProxy.SendUpload(encryptedFilename);
}
[TestMethod, TestCategory("BVT")]
public void TheEncryptedFileIsSent()
{
var stream = new MemoryStream();
var filename = Fixture.Create<string>();
var encryptedFilename = Fixture.Create<string>();
FilenameBuilder
.BuildEncryptedFilename(Arg.Any<string>())
.Returns(encryptedFilename);
Sut.SendUploadToProcessor(stream, filename);
// Something here to verify FileEncrypter.Encrypt() gets called first
FileTransferProxy
.Received()
.SendUpload(encryptedFilename);
}
Спасибо, Дэвид. Я забыл о конструкции When-Do, вот что я искал. Пространство имен NSubstitute.Experimental недоступно в пакете NuGet, как бы получить версию NSubstitute, которая включает это пространство имен? –
Версия NuGet имеет это (это не отдельная DLL, просто используйте 'using NSubstitute.Experimental'). Он был введен с v1.5.0 (текущая версия v1.6.0). –
Я попытался вначале использовать инструкцию using, и по какой-то причине она не была распознана. Он работает сейчас. Я оставил некоторые отзывы в дискуссионной группе. Благодаря! –