我們使用UnityAutoMoq的嘲笑我們大部分的接口在我們的單元測試,但我最近碰到我們想用一個測試框架,以更全面地模擬實際行爲的情況(稱它爲集成測試,如果這有助於你接受我在做什麼)。註冊通用接口與UnityAutoMoqContainer
我期望UnityAutoMoq讓我註冊具體的映射,而不是讓UnityAutoMoqContainer延遲模擬界面。這對我嘗試過的所有東西都適用,除了通用接口。如果你的視覺和我一樣,這裏有我想要一個片段:
public static void Register(IUnityContainer container)
{
...
container.RegisterType(typeof(IService<>), typeof(TestFrameworkService<>),
new HierarchicalLifetimeManager(), new InjectionFactory(Create));
...
}
private static object Create(IUnityContainer container, Type type, string name)
{
var T = type.GetGenericArguments().Single();
return new TestFrameworkService<T>();// For simplicity, pretend this works
}
正如你可以從上面看到的,我註冊的通用接口,一個通用的混凝土,然後根據注射工廠使用傳入類型來解析它(爲簡單起見,實際的實現被省略)。這適用於一個普通的UnityContainer,返回預期的具體。 UnityAutoMoqContainer會返回一個模擬,完全繞過注射工廠。
有沒有人嘗試過我想要完成的任何事情?有任何想法嗎?