3
我有表達下面的代碼以聲明的方式麻煩:Autofixture:如何以聲明方式表示下列代碼?
[Theory]
[InlineData(@"-o=C:\Temp\someFile -p=1")]
[InlineData(@"-p=1 -o=C:\Temp\someFile")]
public void ParseMissingParameterShouldReturnCorrectResult(
string argsString
)
{
.....
var fixture = new Fixture();
fixture.Register<IFoo>(fixture.Create<Foo>);
fixture.Register<IBar>(fixture.Create<Bar>);
var sut = fixture.Create<SomeClass>();
.....
}
在我的生產代碼,我有這樣的:
new SomeClass(new Foo(new Bar))
與SomeClass的的構造函數定義爲:
public SomeClass(IFoo foo)
TIA,
大衛
編輯:
SomeClass的看起來像
public class SomeClass : IQux
{
private readonly IFoo _foo;
public SomeClass(IFoo foo)
{
_foo= foo;
}
不幸的是,這不是在我的情況下工作,因爲我得到以下異常:'Ploeh.AutoFixture.Objec tCreationException:AutoFixture無法從nameSpace.IFoo創建實例,很可能是因爲它沒有公共構造函數,是抽象類型或非公共類型。唯一的區別是我使用FakeItEasy。 – DavidS 2013-04-22 11:48:28
'SomeClass'類型是怎麼樣的?你可以更新原始答案嗎?.. – 2013-04-22 12:18:50
如果你使用的是FakeItEasy,只需用'AutoFakeItEasyCustomization'代替'AutoMoqCustomization'。還要注意,提供的示例使用「InlineAutoMockData」(而不是內置的InlineData或InlineAutoData)。 – 2013-04-22 12:23:04