Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Rhino Mock中不区分大小写的期望_C#_Unit Testing_Case_Rhino Mocks - Fatal编程技术网

C# Rhino Mock中不区分大小写的期望

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 {

我用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 { 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();