Rhino Mocks Stub方法不起作用

时间:2011-06-24 18:01:52

标签: c# unit-testing rhino-mocks stub

为什么这种测试方法不起作用?我不断得到要求返回值或抛出异常。

public AuthenticateResponse Authenticate(string username, string password)
        {
            string response = GetResponse(GetUrl(username, password).ToString());

            return ParseResponse(response);
        }


        [TestMethod()]
        [ExpectedException(typeof(XmlException))]
        public void Authenticate_BadXml_ReturnException()
        {
            MockRepository mockRepository = new MockRepository();
            SSO sso = mockRepository.Stub<SSO>();

            sso.Stub(t => t.GetResponse("")).Return("<test>d");

            AuthenticateResponse response = sso.Authenticate("test", "test");
        }

3 个答案:

答案 0 :(得分:3)

您的存储库仍处于“记录”模式。您将记录/重放语义(“旧的”处理方式)与较新的AAA(编号/动作/断言)样式混合在一起。

不要创建自己的存储库,只需使用:

var sso = MockRepository.GeneateStub<SSO>();

现在一切都应该正常工作。

答案 1 :(得分:1)

您的最后一行是调用存根对象上的Authenticate方法,在调用它时没有设置返回值或异常值,因此Rhino Mocks不知道存根应该做什么它会导致错误。你可能不想在你的存根上调用一个方法 - 这对我来说似乎没有意义,是否有另一个对象(你在这个测试中实际测试过)你应该调用一个方法?

答案 2 :(得分:0)

那是你的全部考试吗?如果是这样,你的测试毫无意义。您测试中唯一的对象是您正在存根的对象 - 测试的主题在哪里?

如果您正在尝试测试SSO类,那么绝对不会想要模拟/存根它。如果SSO具有一个或多个依赖项,请使用模拟框架来设置这些依赖项与您的SUT之间的固定交互。这就是模拟框架的确切目的。