В документации мало что описано о макетной последовательности, кроме того, что она существует (см. QuickStart->Разное).
Настройка:
Код: Выделить всё
public interface IMyInterface
{
void Method(string a, string b, CancellationToken? cancellationToken = null);
}
public class MyTestClass
{
private readonly IMyInterface _myInterface;
public MyTestClass(IMyInterface myInterface) { _myInterface = myInterface; }
public void MyMethod()
{
_myInterface.Method("value1", "value2");
//_myInterface.Method("value2", "value3");
}
}
class MyTests
{
[Test]
public void MyTestClassTest()
{
var myMock = new Mock(MockBehavior.Strict);
var sequence = new MockSequence();
myMock
.InSequence(sequence)
.Setup(s => s.Method("value1", "value2", default))
.Verifiable(Times.Once);
myMock
.InSequence(sequence)
.Setup(s => s.Method("value2", "value3", default))
.Verifiable(Times.Once);
var myTestClass = new MyTestClass(myMock.Object);
myTestClass.MyMethod();
myMock.Verify();
}
}
Если я запускаю этот тест, он горит зеленым, он не дает сбоя, даже если вторая проверяемая настройка не соответствует:

Если я удалю последовательность, проверка завершится неудачно, как и ожидалось, но это не принесет мне никакой пользы, поскольку я хочу проверить, выполняются ли вызовы в этом порядке (некоторые действия по замене файлов, например, сделать файл a файлом b и сделать некоторый файл c файлом a).
Подробнее здесь: https://stackoverflow.com/questions/797 ... -it-should
Мобильная версия