2
我正在努力應對Moq和StructureMap的一些非常基本的/概念性的問題。鑑於以下代碼,測試失敗。爲什麼?看起來,我的Numbers
屬性上的模擬/注入功能只是被忽略,並且繼續調用原始功能。Moq/StructureMap基礎知識
[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;
}
}
}
是啊,謝謝!我在一個複雜的場景中遇到了這個問題,我試圖在一個微不足道的場景中重現它,而我卻完全困惑不解。有時你只需要另一雙眼睛告訴我,我的再生產是愚蠢的。謝謝你的眼睛! – Jaxidian 2011-02-10 13:47:19