我們有用於存儲的實體框架的MVC4項目。 對於我們的測試,我們最近開始使用Autofixture,它非常棒。忽略虛擬屬性
我們的模型圖是非常深刻的,通常通過創建一個AutoFixture對象創建全圖:人 - >團隊 - >法國 - >公司 - >合同 - > ....等
的問題在於時間。 對象創建需要長達一秒。這導致測試速度變慢。
我覺得自己做了很多事情是這樣的:
var contract = fixture.Build<PersonContract>()
.Without(c => c.Person)
.Without(c => c.PersonContractTemplate)
.Without(c => c.Occupation)
.Without(c => c.EmploymentCompany)
.Create<PersonContract>();
而這個工作,而且見效快。但是這種超規格使得測試很難閱讀,有時我會丟失重要的細節,如.With(c => c.PersonId, 42)
在不重要的.Without()
列表中。
所有這些被忽略的對象都是Entity Framework的導航屬性,並且都是虛擬的。
是否有一種全局方式來告訴AutoFixture忽略虛擬成員?
我曾嘗試創建ISpecimentBuilder
,但沒有運氣:
public class IgnoreVirtualMembers : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
if (request.GetType().IsVirtual // ?? this does not exist)
{
return null;
}
}
}
我似乎無法找到一種方法在ISpecimenBuilder
來檢測對象,我們正在建設是另一個類的虛擬成員。可能ISpecimenBuilder
這是不正確的地方做到這一點。任何其他想法?
保存當天。但是,至少在美國,Customisations拼寫爲Customizations。 :) –
我知道,討厭的z進入所有* sations。在英國它拼寫正確,與「s」 - ))) – trailmax
這是一個夢幻般的解決方案。我能夠將課程放到我的項目中,並立即用於Moq。很棒的工作! – Halcyon