Использование Expect.Call из Moh для Rhino для свойства Mock в VB.NET - PullRequest
2 голосов
/ 23 июня 2011

Следующий код C # работает нормально, и тест проходит, как и ожидалось.

using NUnit.Framework;
using Rhino.Mocks;

namespace RhinoMocksTesting
{
    public interface ITesting
    {
        string Test { get; }
    }

    [TestFixture]
    public class MocksTest
    {

        [Test]
        public void TestMockExpect()
        {
            var mocks = new MockRepository();
            var testMock = mocks.StrictMock<ITesting>();
            Expect.Call(testMock.Test).Return("testing");
            mocks.ReplayAll();
            Assert.AreEqual("testing", testMock.Test);
        }
    }
}

Однако попытка сделать то же самое в VB.NET даже не скомпилируется!

Imports NUnit.Framework
Imports Rhino.Mocks

Public Interface ITesting
    ReadOnly Property Test() As String
End Interface

<TestFixture()> _
Public Class MocksTest

    <Test()> _
    Public Sub TestMockExpect()
        Dim mocks = New MockRepository
        Dim testMock = mocks.StrictMock(Of ITesting)()
        Expect.Call(testMock.Test).Return("testing")
        mocks.ReplayAll()
        Assert.AreEqual("testing", testMock.Test)
    End Sub

End Class

В строке Expect.Call выдается следующая ошибка сборки: «Не удалось разрешить перегрузку, поскольку ни один из доступных« Expect »не принял это количество аргументов».

Как правильно использовать Expect.Call с проверенным свойством в VB.NET? Я видел пару сообщений, в которых говорится, что Rhino Mocks лучше работает в VB10, но я застрял в Visual Studio 2008 для этого текущего проекта.

1 Ответ

6 голосов
/ 23 июня 2011

Попробуйте

Rhino.Mocks.Expect.Call(testMock.Test).Return("testing")

Источник

Теперь мы переключаемся на насмешки Rhino 3.5 и видим, что мы ожидаем ошибку при ожидании, что подписьнеправильно.Не беспокойтесь, это потому, что он выбирает неправильный Ожидать.Именно он пытается использовать метод расширения там.Просто добавьте Rhino.Mocks.перед ожиданием и все снова хорошо.Посмотрите, как импорт не делает то же самое.

...