c# - net - invokerequired is false



Verifica una chiamata al metodo usando Moq (1)

Stai controllando il metodo sbagliato. Moq richiede che tu imposti (e poi opzionalmente Verifica) il metodo nella classe di dipendenza.

Dovresti fare qualcosa di più simile a questo:

class MyClassTest
{
    [TestMethod]
    public void MyMethodTest()
    {
        string action = "test";
        Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();

        mockSomeClass.Setup(mock => mock.DoSomething());

        MyClass myClass = new MyClass(mockSomeClass.Object);
        myClass.MyMethod(action);

        // Explicitly verify each expectation...
        mockSomeClass.Verify(mock => mock.DoSomething(), Times.Once());

        // ...or verify everything.
        // mockSomeClass.VerifyAll();
    }
}

In altre parole, stai verificando che chiamando MyClass#MyMethod , la tua classe chiamerà sicuramente SomeClass#DoSomething una volta in quel processo. Si noti che non è necessario l'argomento Times ; Stavo solo dimostrando il suo valore.

https://src-bin.com

Sono abbastanza nuovo ai test unitari in C # e sto imparando a usare Moq. Di seguito è la classe che sto cercando di testare.

class MyClass
{
    SomeClass someClass;
    public MyClass(SomeClass someClass)
    {
        this.someClass = someClass;     
    }

    public void MyMethod(string method)
    {
        method = "test"
        someClass.DoSomething(method);
    }   
}

class Someclass
{
    public DoSomething(string method)
    {
        // do something...
    }
}

Di seguito è riportato il mio TestClass:

class MyClassTest
{
    [TestMethod()]
    public void MyMethodTest()
    {
        string action="test";
        Mock<SomeClass> mockSomeClass = new Mock<SomeClass>();
        mockSomeClass.SetUp(a => a.DoSomething(action));
        MyClass myClass = new MyClass(mockSomeClass.Object);
        myClass.MyMethod(action);
        mockSomeClass.Verify(v => v.DoSomething(It.IsAny<string>()));
    }
}

Ottengo la seguente eccezione:

Expected invocation on the mock at least once, but was never performed
No setups configured.
No invocations performed..

Voglio solo verificare se il metodo "MyMethod" viene chiamato o meno. Mi sto perdendo qualcosa?

Grazie in anticipo!





moq