Носорог носик ААА - PullRequest
       31

Носорог носик ААА

2 голосов
/ 29 февраля 2012

Ошибка при запуске метода теста rhinomock: Метод теста TestProject1.UnitTest2.TestMethod1 выдал исключение: Rhino.Mocks.Exceptions.ExpectationViolationException: ITestInterface.Method1 (5); Ожидаемый # 1, фактический # 0.

Мой код выглядит так: -

namespace ClassLibrary1
{
    public interface ITestInterface
    {
        bool Method1(int x);

        int Method(int a);
    }

    internal class TestClass : ITestInterface
    {

        public bool Method1(int x)
        {
            return true;
        }

        public int Method(int a)
        {
            return a;
        }
    }
}

И мой тест выглядит примерно так: -

using ClassLibrary1;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rhino.Mocks;

namespace TestProject1
{
    [TestClass]
    public class UnitTest2
    {
        [TestMethod]
        public void TestMethod1()
        {
            ITestInterface mockProxy = MockRepository.GenerateMock<ITestInterface>();

            TestClass tc = new TestClass();
            bool result = tc.Method1(5);           

            Assert.IsTrue(result);


            mockProxy.AssertWasCalled(x => x.Method1(5));

        }
    }
}

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 29 февраля 2012

Вы ожидаете, что ITestInterface.Method1 будет вызываться, но это никогда не происходит.
Вы вообще не используете свой mockProxy в тестовом коде - вы просто создаете его и создаете свой собственный экземпляр, но между ними нет никакой связидва из них.
Ваш TestClass не зависит от какого-либо интерфейса, который вы хотите смоделировать, аналогичный пример, который использует макет будет:

internal class TestClass
{
    private ITestInterface testInterface;

    public TestClass(ITestInterface testInterface)
    { 
       this.testInterface = testInterface;
    }

    public bool Method1(int x)
    {
        testInterface.Method1(x);
        return true;
    }

}

[TestClass]
public class UnitTest2
{
    [TestMethod]
    public void TestMethod1()
    {
        ITestInterface mockProxy = MockRepository.GenerateMock<ITestInterface>();

        TestClass tc = new TestClass(mockProxy);
        bool result = tc.Method1(5);           

        Assert.IsTrue(result);


        mockProxy.AssertWasCalled(x => x.Method1(5));
    }
}

Я думаю, вы должны прочитать больше об использовании RhinoМок, например Rhino Mocks AAA Быстрый старт?

...