C# Rhino Mock中不区分大小写的期望
我用Rhino Mocks来期待电话。只有一个参数是字符串。但我不担心绳子的问题。即使情况不对,我也希望考试通过。因此,我正在做以下工作:C# Rhino Mock中不区分大小写的期望,c#,unit-testing,case,rhino-mocks,C#,Unit Testing,Case,Rhino Mocks,我用Rhino Mocks来期待电话。只有一个参数是字符串。但我不担心绳子的问题。即使情况不对,我也希望考试通过。因此,我正在做以下工作: //expect log message to be called with a string parameter. //We want to ignore case when verifying so we use a constraint //instead of a direct parameter Expect.Call(delegate {
//expect log message to be called with a string parameter.
//We want to ignore case when verifying so we use a constraint
//instead of a direct parameter
Expect.Call(delegate { logger.LogMessage(null); })
.Constraints(Is.Matching<string>(x => x.ToLower()=="f2"));
//希望使用字符串参数调用日志消息。
//我们希望在验证时忽略大小写,因此使用约束
//而不是直接参数
Expect.Call(委托{logger.LogMessage(null);})
.Constraints(Is.Matching(x=>x.ToLower()==“f2”);
这似乎有点冗长。有没有更明智的方法呢?我会使用@Darin建议的AAA格式(或类似格式)。我认为它更简洁,但我认为,对于不区分大小写的匹配,您仍然必须使用相同的基本约束。助手方法可以使其更具可读性
// arrange
var loggerStub = MockRepository.GenerateStub<ILogger>();
// act
loggerStub.LogMessage("f2");
// assert
loggerStub.AssertWasCalled(
x => x.LogMessage(Arg<string>.Matches(
s => string.Equals(s, "f2", StringComparison.OrdinalIgnoreCase)
))
);
private bool CaseInsensitive( string s, string t )
{
return string.Equals( s, t, StringComparison.OrdinalIgnoreCase );
}
var loggerMock = MockRepository.GenerateMock<Logger>();
loggerMock.Expect( l => l.LogMessage( Arg<string>.Matches( s => CaseInsensitive( s, "f2" ))));
classUnderTest.MethodUnderTest();
loggerMock.VerifyAllExpectations();
private bool不区分大小写(字符串s、字符串t)
{
返回string.Equals(s,t,StringComparison.OrdinalIgnoreCase);
}
var loggerMock=MockRepository.GenerateMock();
Expect(l=>l.LogMessage(Arg.Matches(s=>case不区分大小写(s,“f2”)));
classUnderTest.MethodUnderTest();
loggerMock.verifyallexpections();
我认为他想验证字符串,但不关心大小写。这两个都不是。
private bool CaseInsensitive( string s, string t )
{
return string.Equals( s, t, StringComparison.OrdinalIgnoreCase );
}
var loggerMock = MockRepository.GenerateMock<Logger>();
loggerMock.Expect( l => l.LogMessage( Arg<string>.Matches( s => CaseInsensitive( s, "f2" ))));
classUnderTest.MethodUnderTest();
loggerMock.VerifyAllExpectations();