Peut-être est-ce lié à la version de RhinoMocks que vous utilisez? J'utilise RhinoMocks version 3.5.0.1337 et Like détecte la longueur correctement.
public interface IFoo
{
void Write(string value);
}
public class Bar
{
private readonly IFoo _foo;
public Bar(IFoo foo)
{
_foo = foo;
}
public void Save(string value)
{
_foo.Write(value);
}
}
teste
private Bar _bar;
private IFoo _foo;
[SetUp]
public void BeforeEachTest()
{
var mocker = new RhinoAutoMocker<Bar>();
_bar = mocker.ClassUnderTest;
_foo = mocker.Get<IFoo>();
}
[Test]
public void Given_input_length_equal_to_that_required_by_Like()
{
CallSave("".PadLeft(512));
}
[Test]
public void Given_input_longer_than_required_by_Like()
{
CallSave("".PadLeft(513));
}
[Test]
[ExpectedException(typeof(ExpectationViolationException))]
public void Given_input_shorter_than_required_by_Like()
{
CallSave("".PadLeft(511));
}
private void CallSave(string value)
{
_bar.Save(value);
_foo.AssertWasCalled(x => x.Write(Arg.Text.Like(".{512,}")));
}
Les tests passent aussi si j'utilise .Expect() au lieu de .AssertWasCalled() par la voie.
private void CallSave(string value)
{
_foo.Expect(x => x.Write(Arg.Text.Like(".{512,}")));
_bar.Save(value);
_foo.VerifyAllExpectations();
}
Si ces tests passent pour vous et vous êtes certain de la longueur de l'argument vérifier alors que écrire est appelé en changeant le test
_foo.AssertWasCalled(x => x.Write(Arg<specify type here>.Is.Anything))
modifier:
Les tests passer également avec RhinoMocks version 3.6.0.0
J'utilisais le Like dans mon affirmation au lieu de mon contexte/configuration. J'ai arrangé les choses selon votre code, et mon code fonctionne maintenant comme prévu. Merci beaucoup. – lance