在VB.NET中使用Rhino Mocks的Expect.Call获取Mock属性

时间:2011-06-22 20:47:18

标签: vb.net visual-studio-2008 rhino-mocks

以下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'接受此数量的参数。”

在VB.NET中使用Expect.Call和mocked属性的正确方法是什么?我看过一些帖子说Rhino Mocks在VB10中运行得更好,但是我在这个当前项目中遇到了Visual Studio 2008。

1 个答案:

答案 0 :(得分:6)

尝试

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

Source

  

现在我们切换到Rhino mocks 3.5和   看到我们在Expect上收到错误   说签名不是   正确。不用担心这是因为它   选择错误的期望。它是   即试图使用扩展名   方法那里。只需添加Rhino.Mocks。   在期待之前,一切都很顺利   再次。看看进口是怎么做的   同样的事情。