【发布时间】:2013-03-04 18:30:51
【问题描述】:
给定这个系统来测试:
public class MySut
{
private readonly IHardToMockDependency _hardToMockDependency;
public MySut(IHardToMockDependency hardToMockDependency,
IOtherDependency otherDependency)
{
_hardToMockDependency = hardToMockDependency;
}
public string GetResult()
{
return _hardToMockDependency.GetResult();
}
}
public interface IOtherDependency { }
public interface IHardToMockDependency
{
string GetResult();
}
还有这个单元测试:
internal class FakeHardToMockDependency : IHardToMockDependency
{
private readonly string _result;
public FakeHardToMockDependency(string result)
{
_result = result;
}
public string GetResult()
{
return _result;
}
}
public class MyTests
{
[Fact]
public void GetResultReturnsExpected()
{
string expectedResult = "what I want";
var otherDependencyDummy = new Mock<IOtherDependency>();
var sut = new MySut(new FakeHardToMockDependency(expectedResult),
otherDependencyDummy.Object);
var actualResult = sut.GetResult();
Assert.Equal(expectedResult, actualResult);
}
}
我应该如何将其转换为使用 AutoFixture.Xunit 和 AutoFixture.AutoMoq(同时仍然使用手动伪造)?
在现实世界的测试中,手动伪造的界面和行为会更加复杂。请注意,我想将匿名变量(expectedResult 字符串)传递给手动 fake 的构造函数。
【问题讨论】:
标签: moq xunit.net autofixture automocking