Nunit: UnexpectedArgumentMatcherException lors de l'appel du programme d'installation la deuxième fois

Créé le 29 août 2019  ·  3Commentaires  ·  Source: nunit/nunit

J'ai ces deux tests (dépouillés jusqu'aux os pour reproduire l'erreur):

    [TestFixture]
    public class CreditorMapperTests
    {        
        private IAbcContext _AbcContext;

        [SetUp]
        public void Setup()
        {
            _AbcContext = Substitute.For<IAbcContext>();
            _AbcContext.CompanyInfo.Returns(x => new CompanyInfo(Arg.Any<Guid>()));
        }

        [Test]
        public void A()
        {
            Creditor publishDocument = new Creditor();

            publishDocument.CompanyExternalId = _AbcContext.CompanyInfo.UniqueId;
        }

        [Test]
        public void  B()
        {
            Creditor publishDocument = new Creditor();

            publishDocument.CompanyExternalId = _AbcContext.CompanyInfo.UniqueId;
        }
    }

    public interface IAbcContext
    {        
        CompanyInfo CompanyInfo { get; }
    }

    public class CompanyInfo
    {
        public CompanyInfo(Guid uniqueId)
        {
            UniqueId = uniqueId;
        }

        public readonly Guid UniqueId;
    }

Le Setup() pour A() fonctionne bien. Cependant, lorsque Setup() est appelé pour B() , j'obtiens cette erreur :

NSubstitute.Exceptions.UnexpectedArgumentMatcherException : Argument
les matchers (Arg.Is, Arg.Any) ne doivent être utilisés qu'à la place du membre
arguments. Ne pas utiliser dans une instruction Returns () ou ailleurs
en dehors d'un appel de membre. Utilisation correcte :
sub.MyMethod(Arg.Any()).Returns("salut") Utilisation incorrecte :
sub.MyMethod("salut").Returns(Arg.Any())

Cela ne se produit que lorsque j'exécute les deux tests en exécutant tous les tests de cette classe.
Si j'exécute B() seul, l'exception n'est pas levée.

Pourquoi Setup() pour B() échoue-t-il uniquement lorsqu'il est exécuté automatiquement après A() ?

(nb. les deux tests sont identiques).

J'utilise NUnit v3.8.1 et NSubstitute v2.0.3

notabug

Commentaire le plus utile

Ceci est un message d'erreur de NSubstitute. Le message lui-même explique ce qui ne va pas avec votre code. Il n'y a rien que NUnit puisse faire à ce sujet.

Si vous demandez pourquoi votre code ne lance que la deuxième fois et pas la première fois, vous demandez aux mauvaises personnes. Vous pouvez demander au développeur de NSubstitute, mais peut-être qu'une meilleure utilisation de votre temps est d'arrêter d'utiliser Arg.Any() d'une manière qui n'est pas destinée à être utilisée.

Tous les 3 commentaires

Ceci est un message d'erreur de NSubstitute. Le message lui-même explique ce qui ne va pas avec votre code. Il n'y a rien que NUnit puisse faire à ce sujet.

Si vous demandez pourquoi votre code ne lance que la deuxième fois et pas la première fois, vous demandez aux mauvaises personnes. Vous pouvez demander au développeur de NSubstitute, mais peut-être qu'une meilleure utilisation de votre temps est d'arrêter d'utiliser Arg.Any() d'une manière qui n'est pas destinée à être utilisée.

@ backwardsDave1 Je ferme ce problème, car cela n'a rien à voir avec NUnit.

Cette page vous a été utile?
0 / 5 - 0 notes