gpt4 book ai didi

c# - 最小起订量/StructureMap 基础知识

转载 作者:行者123 更新时间:2023-11-30 21:17:08 24 4
gpt4 key购买 nike

我正在努力解决 Moq 和 StructureMap 的一些非常基本/概念性的问题。给定以下代码,测试失败。为什么?似乎我在 Numbers 属性上模拟/注入(inject)的功能被忽略了,它继续调用原始功能。

[TestFixture]
public class MockBasics
{
[SetUp]
public void SetUp()
{
var m = new Mock<Foo>();
m.SetupGet(x => x.Numbers).Returns(() => new List<int> {1, 2, 3, 4, 5, 6});
ObjectFactory.Inject(m.Object);
}

[Test]
public void DoTest()
{
var f = new Foo();

Assert.IsTrue(f.Numbers.Contains(6));
}

public class Foo
{
private IList<int> _numbers;
public virtual IList<int> Numbers
{
get { return _numbers; }
set { _numbers = value; }
}

public Foo()
{
//_numbers = new List<int> { 1, 2, 3, 4, 5, 6 }; // This passes the test
_numbers = new List<int> { 1, 2, 3, 4 };
}
}

public class Bar
{
public IList<int> GetNumbers()
{
var x = ObjectFactory.GetInstance<Foo>();
return x.Numbers;
}
}
}

最佳答案

您的代码没有连接点。您正在将 Foo 的模拟注入(inject) ObjectFactory,然后在不涉及 ObjectFactory 的情况下创建 Foo 的实例。

我认为您的意图是:

var b = new Bar();
Assert.IsTrue(b.GetNumbers.Contains(6));

关于c# - 最小起订量/StructureMap 基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com