首先,有关我的开发环境的一些信息:
我尝试模拟一个需要一些字符串参数的函数,我想使用它It.IsAny<string>()进行设置。通常我会这样:
using ( AutoMock mock = AutoMock.GetLoose() ) {
mock.Mock<SomeInterface>()
.Setup( x => x.someFunction(
It.IsAny<string>(),
It.IsAny<string>(),
It.IsAny<string>() ) );
//...
}
Run Code Online (Sandbox Code Playgroud)
但是现在我想调用一个进行设置的功能,因此我不必复制粘贴上面的代码并使我的单元测试稍微“好看”。我想象这样的事情:
using ( AutoMock mock = AutoMock.GetLoose() ) {
UnknownType anyString = It.IsAny<string>();
setup( mock, anyString );
//...
}
void setup( Automock mock, UnknownType anyString ){
mock.Mock<SomeInterface>()
.Setup( x => x.someFunction( anyString, anyString, anyString ) );
}
Run Code Online (Sandbox Code Playgroud)
有人知道解决方案吗?我当我使用string甚至var为未知类型的变量anyString保持的值null之后UnknownType anyString …
当我将字符串数组传递给这样的测试函数时:
[TestCase( new string[] { "1", "2", "3" }, 1 )]
[TestCase( new string[] { "54", "508" }, 1 )]
[TestCase( new string[] { "768" }, 2 )]
public void someTest( string[] someStrings, int someNumber ) {
//...
}
Run Code Online (Sandbox Code Playgroud)
编译工作正常。
但是,如果我删除整数参数,如以下代码片段所示:
[TestCase( new string[] { "1", "2", "3" } )]
[TestCase( new string[] { "54", "508" } )]
[TestCase( new string[] { "768" } )]
public void someTest( string[] someStrings ) {
//...
}
Run Code Online (Sandbox Code Playgroud)
出现消息的编译器错误An attribute argument must be …