おそらく、使用しているRhinoMocksのバージョンに関係していますか? RhinoMocksバージョン3.5.0.1337を使用していて、Likeが長さを正しく検出しています。
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);
}
}
試験
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,}")));
}
Iの方法により.Expect()の代わりに.AssertWasCalled()を使用した場合のテストも合格。
private void CallSave(string value)
{
_foo.Expect(x => x.Write(Arg.Text.Like(".{512,}")));
_bar.Save(value);
_foo.VerifyAllExpectations();
}
これらのテストは、あなたのために渡し、あなたは引数の長さについて一定している場合は、その書き込みが
_foo.AssertWasCalled(x => x.Write(Arg<specify type here>.Is.Anything))
編集にテストを変更することで呼び出されている確認します。
テストRhinoMocksバージョン3.6.0.0も渡します。
私はコンテキスト/セットアップの代わりに私のアサーションにLikeを使用していました。私はあなたのコードごとに物事を配置し、私のコードは現在、期待どおりに動作しています。どうもありがとう。 – lance