XUnit'in teorileriyle birleştiğinde AutoFixture'un gücünü takdir ediyorum. Kısa bir süre önce encapsulating customizations'un kullanımını benimsedim ve testlerimi bir özellik aracılığıyla sağladım.Özel teori veri özniteliğim AutoFixture için oluşturduğum armatürü nasıl değiştirebilirim?
Bazı durumlarda, sınamayı yürütmek için bir kerelik bir senaryoya ihtiyacım var. Yukarıdaki gibi bir AutoDomainDataAttribute kullandığımda, bir IFixture isteyebilir ve öznitelik tarafından oluşturulan aynı örneği almayı bekleyebilir miyim?
Benim senaryoda, koleksiyonlar vb. Için varsayılan olarak MultipleCustomization kullanıyorum. Ancak, bu durumda, SUT yapıcımdan yalnızca bir öğenin gönderilmesini istiyorum. Yani, şöyle benim test yöntemi tanımladığınız:
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
anonim Ürün oluştururken Ne yazık ki, bir özel durum alıyorum. Diğer testler, bir Ürünü bu niteliklere sahip bir yöntem parametresi olarak sorarsam, gayet iyi çalışır. Bu özel durumda sadece bir sorun var, bu noktada fikstür parametresinin AutoDomainDataAttribute'im tarafından oluşturulanla aynı olduğunu umuyorum.
Ürünün yapıcısı, AutoDomainData aracılığıyla yerinde sahip olduğum özelleştirmeler nedeniyle normalde 3 öğe ile doldurulacak bir IEnumerable bekler. Şu anda, benim DomainCustomization o sırayla, Çoklu Özelleştirme ve AutMoqCustomization oluşan bir CompositeCustomization olduğunu.
Kural dışı durum şöyledir: "InvalidCastException: 'Product' yazabilmek için 'Castle.Proxies.ObjectProxy' türünde nesne yazılamıyor." Eğer Özellikte aktif aynı Armatür örneğini gerekiyorsa
Teşekkür ederim, Mark. Hemen buraya yazdıktan sonra zorunlu test yaklaşımına geçtim. Yine de alternatifi bilmek güzel. Son olarak, benim özel testim son kategorinin üründen kaldırılamamasını sağlıyor (en az bir tane olmalı). Bu, RepeatCount'u da kontrol etmek için ihtiyacım olan tek zamandır. Tekrar teşekkürler! – ventaur
Sadece Kategoriler kaldırılmamış olabilir.Sayım() - 1 'öğelerini test ayarlarınızın bir parçası olarak ilk olarak test ettikten sonra, sadece bir tane sola, sonuncuyu kaldıramayacağınızı test ettik. –
Evet, sanırım öyle. Programcılar bazen karmaşık şeylerin üstesinden gelirler. :-) – ventaur