2017-01-13 36 views
6

, ben hata alıyorum bir yapı hatasına oluşturur sonra farklı parametrelere sahip ReturnsAsync yöntemlerinin bir listesi. Bunun, aşırı yüklenmekte olan ReturnsAsync işlevinden kaynaklandığını anlıyorum. Ancak, meslektaşımın bilgisayarında aynı birim testini çalıştırdığımda, herhangi bir hata olmadan çalışır. Bunun neden olacağını bilen var mı? Bunu nasıl düzelteceğini bilen var mı?Returnsasync (null) I (<code>Moq</code> ile birlikte), Visual Studio C# birim test yönteminde <code>ReturnsAsync(null)</code> kullandığınızda

all packages referencing ******** must install nuget package Microsoft.Bcl.Build.

herhangi bir etkiye sahip Could: Ben oluştururken

Ayrıca, bunu uyarıları almak?

+0

'ReturnAsync (null)' işlevini kullanmak tamamen sorun değil. Belirsiz çağrı ile yöntemleri kontrol edin - bu yöntemlerin tanımlandığı yerler. –

+0

@SergeyBerezovskiy, null bir parametre olduğunda ReturnsAsync yönteminin belirsiz bir çağrıya sahip olduğunu söylüyor. –

+0

Evet, daha önce –

cevap

8

Orada şu parametrelere sahip class.They MOQ ReturnsExtensions iki ReturnsAsync uzatma yöntemleri şunlardır: Bir görevin tarafından döndürülmesi gereken değer kabul görebileceğiniz gibi

(this IReturns<TMock, Task<TResult>> mock, TResult value) 
(this IReturns<TMock, Task<TResult>> mock, Func<TResult> valueFunction) 

ve başka bir değeri dönecektir hangi temsilci kabul eder. null derleyicisini geçerken değer mi yoksa temsilci mi olduğunu bilmiyorum. Görev parametresinin bir değer türü (örn. Int) olduğu durum böyle değildir. Çünkü boş olamaz ve derleyici, null'un bir delege olduğunu anlar. Muhtemelen meslektaşınızın bilgisayarında durum böyle. -

Eğer derleyici doğru yöntem aşırı seçmenize yardımcı olmak için ihtiyaç Bu hatayı düzeltmek için görevin sonucu (örneğin string) türüne boş döküm: null

RetursAsync((string)null) 

Yoksa geçebilir değeri

string s = null; 
... ReturnsAsync(s); 
+1

alternatif geçebileceği 'RetursAsync (varsayılan (string))' –

+1

Veya, bir yükseltmeden sonra bu hataların çok var ve döküm rahatsız etmek istemiyorsanız Farklı dönüş türleri: 'ReturnsAsync (() => null) –