我是AutoFixture的新手,所以我不知道下面的想法是否有意義或者是合理的做法。我有一個應用程序,我負責集成測試,它大量使用Castle Windsor。爲了簡化依賴關係管理並使我的測試更像應用程序代碼,我一直在我的測試初始化方法和使用容器中構建Windsor容器。解析實例化我正在測試的代碼。我想擺脫這種方式,因爲它限制了我在某些情況下的靈活性。使用AutoFixture集成測試應用程序的技巧使用Castle Windsor
我希望做的是有一個看起來像這樣的測試:
[Theory]
[Dependency]
public void TestWithDependencies(IThing thing)
{
thing.Hello();
}
要做到這一點,我可以做到以下幾點:
public sealed class DependencyAttribute : AutoDataAttribute
{
public DependencyAttribute()
: base(new Fixture().Customize(new WindsorCustomization()))
{
}
}
public class WindsorCustomization : ICustomization
{
public WindsorCustomization()
{
// build container here using SUT installers
}
public void Customize(IFixture fixture)
{
fixture.Inject<IThing>(new Thing());
}
}
這樣做沒有工作,但我想避免的是需要將每個接口複製到從Windsor容器到AutoFixture IFixture的實現映射中。
Welp!我只是看看AutoMoq的代碼,並看到了如何做我想做的事情。如果有人感興趣,我可以在代碼中發佈代碼。 – thebeekeeper 2012-08-14 18:21:17
是的,這與AutoMoq的工作方式非常接近:) – 2012-08-14 19:02:12