我想要一个单元测试来验证 2 个函数调用以正确的顺序发生。在示例中,第一个函数加密文件并将其保存到文件系统,第二个函数将加密文件发送到第 3 方处理器(通过 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);
}