Vielleicht hängt es mit der Version von RhinoMocks zusammen, die Sie verwenden? Ich verwende RhinoMocks Version 3.5.0.1337 und Like erkennt die Länge korrekt.
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);
}
}
testet
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,}")));
}
Die Tests auch passieren, wenn ich .Expect() anstelle von .AssertWasCalled() übrigens verwenden.
private void CallSave(string value)
{
_foo.Expect(x => x.Write(Arg.Text.Like(".{512,}")));
_bar.Save(value);
_foo.VerifyAllExpectations();
}
Wenn passieren diese Tests für Sie und Sie sicher sind, über die Länge des Arguments dann sicher, dass Schreiben durch Ändern der Test
_foo.AssertWasCalled(x => x.Write(Arg<specify type here>.Is.Anything))
bearbeiten aufgerufen wird:
Die Tests auch mit RhinoMocks Version 3.6.0.0 übergeben
Ich habe das Like in meiner Assertion anstelle meines Contexts/Setups verwendet. Ich habe die Dinge nach deinem Code geordnet, und mein Code funktioniert jetzt wie erwartet. Danke vielmals. – lance