Gérer le warning "Cannot convert null literal to non-nullable reference type" avec Moq
Date of publication
10/16/2023
No comments
Quand on utilise Moq avec de vieux projets qui migrent de .net Framework vers .net, il y a un petit Warning qui devient vite irritant :
Warning CS8625 Cannot convert null literal to non-nullable reference type.
Celui-ci se produit quand une méthode doit retourner null
.
Voici un exemple d'interface avec une opération asynchrone (histoire de reproduire un cas proche de la réalité).
public interface IMyRepository {
ValueTask<MaClass?> MethodeReturnMaClassNullableAsync(...);
}
Pour utiliser Moq, il faut ajouter un Cast
en plus du ValueTask.FromResult
.
var repository = new Mock<IMyRepository>();
repository
.Setup(c => c.MethodeReturnMaClassNullableAsync(...))
.Returns(ValueTask.FromResult((MaClass?)null));
Toute implémentation sans le Cast
et le ValueTask.FromResult
feront apparaitre un Waring. Cette écriture n'est pas nouvelle, mais il semble qu'elle perturbe encore nombre de développeurs.