我正在努力通過編寫一些可以爲我創建屬性的助手來使EF更容易進行單元測試。我有一對夫婦的支持領域打開帶有通用返回類型的類型
private Mock<DbSet<Workflow>> mockedWorkFlows;
private Mock<DbSet<WorkflowError>> mockedWorkFlowErrors;
而且我希望有一個通用的功能,能夠回到我正確的支持字段具有以下功能
public Mock<DbSet<T>> Mocked<T>(T t) where T : class
{
if ((object)t is Workflow)
{
return mockedWorkFlows; //cannot Workflow to T
}
}
有,我想一些私人支持字段根據傳遞的類型返回。
但是,即使我添加了類別約束Workflow
,我也會得到相同的錯誤。
我也嘗試切換t's
類型,但沒有運氣。幾個後備字段的類型不共享除對象以外的共同祖先。我正在嘗試做什麼?
我沒有看到這個方法的重點。創建一個模擬需要1行代碼,如果你想設置模擬,你必須單獨設置每一個模擬,所以你爲什麼不創建一個工廠模擬某些類型。 – FCin
從你的EF上下文中嘲笑一個IDbSet不止一行代碼。我有一個流暢的接口來分配數據,但是你必須在某個地方公開後臺字段,因爲當你窺探那些實際上被調用的時候。我只想要一個較小的API,而不是爲上下文的所有IDbSet屬性設置WorkflowsMocked,WorkflowErrorsMocked等。 –
wootscootinboogie
而不是模擬'DbSet',你有沒有考慮嘲笑'SqlConnection',例如,使用Effort框架? https://github.com/tamasflamich/effort –