coc*_*lla 6 interface moq xunit.net abstract autofixture
请注意,我对TDD有些新意,所以我会提出一般性的建议以及具体的答案.
抽象类和接口都不能实例化.显然,Moq可以在第二次测试中给我一个模拟的ADataFeed实例.为什么AutoMoqCustomization适用于接口IDataFeed而不适用于抽象类ADataFeed,而是抛出InvalidOperationException?
其次,AutoFixture方法(或者通常是TDD)可以驱动一个设计,该设计可能需要一个带有构造函数的抽象类来要求并保证某些值,例如在这种情况下的连接字符串?
[Theory, AutoMoqData]
public void AllDataFeedsHaveAConectionString(
IDataFeed sut)
{
var result = sut.GetConnectionString();
Assert.Null(result);
}
[Fact]
public void AllDataFeedsRequireAConnectionString()
{
var expected = Guid.NewGuid().ToString();
var sut = new Mock<ADataFeed>(expected);
var result = sut.Object.GetConnectionString();
Assert.Equal(expected, result);
}
[Theory, AutoMoqData]
public void AllDataFeedsRequireAConnectionString2(
[Frozen] string expected,
ADataFeed sut)
{
var result = sut.GetConnectionString();
Assert.Equal(expected, result);
}
Run Code Online (Sandbox Code Playgroud)