3
我一直在ServiceStack 3.9.38項目中測試自己的業務邏輯,並且在單獨運行單元測試導致成功時遇到問題,並且一起運行測試會導致其中一個失敗。幾個小時後,我做了一個可重複的單元測試。如果你運行整個夾具,第二個測試將失敗。分開運行測試使它們通過。NUnit + ServiceStack的Funq AutoWire問題
using Funq;
using NUnit.Framework;
[TestFixture]
public class Test
{
interface IBar {}
class Bar : IBar {}
class TestFoo { public IBar Bar { get; set; } }
[Test]
public void Test1()
{
var container = new Container();
var m = new TestFoo();
container.Register<IBar>(new Bar());
Assert.NotNull(container.Resolve<IBar>(), "Resolve");
container.AutoWire(m);
Assert.NotNull(m.Bar, "Autowire");
}
[Test]
public void Test2()
{
var container = new Container();
var m = new TestFoo();
container.AutoWire(m);
Assert.Throws<ResolutionException>(() => container.Resolve<IBar>());
Assert.IsNull(m.Bar); // FAILS HERE
}
}
那是Funq.Container配置的問題?或者這是一個錯誤?任何解決方法?
編輯:我已經發布了一個問題,在GitHub上:https://github.com/ServiceStack/ServiceStack/issues/521
噢,是的,我知道它在某個地方是靜止的......但它真的不是一個好地方!我認爲它應該是容器實例特定的...所以解決方案可以是使AutoWireHelpers類不是靜態的,autoWireCache不是靜態的,並且使該類成爲Container的字段。但是這是一個內核重構,所以我們應該聽取@mythz – 2013-03-15 17:52:41
@PavelKudinov現在這個問題已經解決,並且不再使用靜態方法。 – mythz 2013-03-19 14:17:53