如何解决AutoFixture从接口问题创建实例
这是我的例子:
public class SomeClass {
public string TestName { get; set; }
}
// And then I call like this
var obj = new Fixture().Create<SomeClass>();
Console.WriteLine(obj.TestName);
// Output: TestNameb7c3f872-9286-419f-bb0a-c4b0194b6bc8
public interface ISomeInterface
{
string TestName { get; set; }
}
// And then I call like this
var obj = new Fixture().Create<ISomeInterface >();
Console.WriteLine(obj.TestName);
// Output: null
如何从具体类之类的界面创建实例?
解决方法
同意Mathew Watson的评论,在提到的问题中可能已经回答了这个问题。
只想分享我的版本,与2012年的回答略有不同;)
public interface ISomeInterface
{
string TestName { get; set; }
}
public class SomeClass : ISomeInterface
{
public string TestName { get; set; }
}
public class Test
{
[Fact]
public void Do()
{
var fixture = new Fixture();
fixture.Customize<ISomeInterface>(x => x.FromFactory(() => new SomeClass()));
var result = fixture.Create<ISomeInterface>();
Console.Out.WriteLine("result = {0}",result.TestName);
// output:
// result = TestName2c7e6902-d959-46ce-a79f-bf933bcb5b7f
}
}
当然,可以考虑使用AutoMoq或AutoNSubstitute。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。