2010-06-01 20 views
51

Set ediciyi daha sonra kullanmak üzere kendi alanım içinde saklamak için sette bir geri arama oluşturmak için Moq kullanmak istediğimi varsayalım.SetupSet() geçersiz. Neyin yerine?

myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value); 

Ve bu sadece iyi çalışır: - (. Yapmacık bir örnek ama sorunun noktasına alır) Böyle bir şey yapabilirdi. Ancak, Intellisense göre SetupSet eskidir. Ama alternatif olarak neyin kullanılması gerektiğini söylemiyor. Bu moq, özelliği bir destek alanıyla otomatik olarak ayarlayan SetupProperty'yi sağladığını biliyorum. Ama aradığım şey bu değil. Set değerini kendi değişkenime aktarmak istiyorum. Bunu eski olmayan yöntemleri kullanarak nasıl yapmalıyım?

cevap

75

Moq sürüm 3.0.204.1 kullanıyorum ve SetupSet benim için geçersiz olarak işaretlenmiş değil. Bununla birlikte, MockLegacyExtensions'da bulunan bir çift SetupSet aşırı yüklenme vardır. Bunları kullanmaktan kaçınabilirsiniz ve Mock sınıfında tanımlanmış olan SetupSet'u kullanabilirsiniz.

Fark, ince ve Action<T>, Func<T, TProperty>'un aksine SetupSet parametresini kullanmanız gerekir.

aşağıdaki arama olmayan kaldırılmış aşırı açılmasına neden olur:

myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value); 

numara bir değeri olan bir ayarlayıcı çağrı müdahale edecek It.IsAny<string>, kullanmaktır.

+1

'Geri Arama <> ' – RobSiklos

+0

@RobSiklos için genel argümanı belirtmeniz gereken bir utanç nedir? Ne ayıp? [QuickStart] 'da (https://code.google.com/p/moq/wiki/QuickStart), _alternate eşdeğer jenerik yöntemi syntax_ – Yaro

+4

@RobSiklos olarak adlandırılır. 'Geri arama (' string value] => myLocalVariable = value) yazabilirsiniz. ' – LazyTarget

İlgili konular