Я только начал использовать NSubstitute
. Я в основном работал с Moq
, и это то, что я делал:NSubstitute не распечатывает утверждение NUnit
// In my unit test on menter code herey mock:
HasLogMessage(Is.EqualTo("expected value"));
private void HasLogMessage(EqualConstraint s)
{
log.Verify(y => y.Error(It.Is<string>(v => Verify(v, s))));
}
private bool Verify(string s, EqualConstraint equalConstraint)
{
Assert.That(s, equalConstraint);
return true;
}
выход, когда модульное тестирование выполняется. Обратите внимание, что он говорит, что ожидается и реальное значение:
Expected string length 14 but was 116. Strings differ at index 0.
Expected: "expected value"
But was: "real value..."
-----------^
at NUnit.Framework.Assert.That(Object actual,
IResolveConstraint выражение, String сообщение, Object [] арг)
Я хочу, чтобы иметь возможность использовать его с NSubstitute
издевается, и вот моя попытка это:
HasLogMessage(Is.EqualTo("Expected value"));
private void HasLogMessage(EqualConstraint s)
{
log.Received().Log(LogLevel.Error, Arg.Is<Func<string>>(x => Verify(x,
}
private bool Verify(Func<string> s, EqualConstraint equalConstraint)
{
Assert.That(s(), equalConstraint);
return true;
}
Но это не выводит ошибка NUnit
утверждения
NSubstitute.Exceptions.ReceivedCallsException : Expected to receive a call matching:
Log(Error, x => value(IdentityServer3.Saml2Bearer.Tests.Saml2BearerGrantValidatorTest)
.Verify(x, value(IdentityServer3.Saml2Bearer.Tests.Saml2BearerGrantValidatorTest+<>c__DisplayClass21_0).s), <null>,)
Actually received no matching calls.
Received 2 non-matching calls (non-matching arguments indicated
with '*' characters)
Я что-то пропустил?
Ваш пример не подходит здесь, второй параметр не является строкой, это 'Func'. И я думаю, это не сработало бы, потому что NSubstitute не будет оценивать мою вторую, он просто сказал бы, что получил неинтерактивный вызов, где второй параметр был другой функцией. 'log.Received() .Log (LogLevel.Error,() =>" expected ");' –
Darius