Comment puis-je utiliser Moq pour se moquer d'une méthode d'extension?

Je suis en train d'écrire un test qui repose sur les résultats d'une méthode d'extension, mais je ne veux pas d'un futur échec de cette méthode d'extension à jamais briser ce test. Se moquant de ce résultat semblait être le choix évident, mais Moq ne semble pas offrir un moyen de surcharger une méthode statique (une demande pour une extension de la méthode). Il y a une idée similaire avec Moq.Protégés et de Moq.Stub, mais ils ne semblent pas offrir quelque chose pour ce scénario. Ai-je raté quelque chose ou dois-je aller sur ce une manière différente?

Voici un exemple trivial qui échoue avec l'habitude "Invalide attente sur un non-substituables membre". C'est un mauvais exemple d'avoir besoin de se moquer d'une méthode d'extension, mais elle devrait faire.

public class SomeType {
    int Id { get; set; }
}

var ListMock = new Mock<List<SomeType>>();
ListMock.Expect(l => l.FirstOrDefault(st => st.Id == 5))
        .Returns(new SomeType { Id = 5 });

Comme pour tout TypeMock junkies qui pourrait me suggère d'utiliser un Isolateur à la place: j'apprécie l'effort fait qu'il ressemble à TypeMock pourrait faire le travail, les yeux bandés et en état d'ébriété, mais notre budget n'est pas en augmentant tout moment bientôt.

  • Un duplicata peut être trouvé ici: stackoverflow.com/questions/2295960/....
  • Cette question est l'ensemble d'un an de plus que celui-là. Si, il y a duplication, il va dans l'autre sens.
  • Toujours pas de solution appropriée en 2019!
InformationsquelleAutor patridge | 2009-02-18