访问模拟对象时,找不到moq文件异常system.xml

时间:2011-09-15 09:33:11

标签: c# exception moq

我收到此代码的文件未找到异常: (System.IO.FileNotFoundException:Die Datei oder Assembly“System.Xml,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e”odereineAbhängigkeitdavonwurde nicht gefunden.Das System kann die angegebene Datei nicht finden。)

public interface ISocket
{
    int Receive(byte[] buffer);
}

    [Test]
    public void ShouldMock()
    {
        var Mock = new Mock<ISocket>();
        ToBeTested Example = new ToBeTested ((ISocket)Mock.Object);
    }

我找不到我的错误,在任何情况下我都没有引用过system.xml。什么可能出错?

编辑:

我从来没有解决过这个问题,我仍然坚持使用手动模拟。我再次尝试设置一个使用moq但又失败的项目。以下是一些具有相同运行时错误消息的其他代码:

    [Test]
    public void shouldLoadContextBasedOn_Type_AfterGettingContextDictionary()
    {
        Type loadableType = typeof(Context_Empty);
        var mocklib= new Mock<IDictionary<Type, Type>>();
        mocklib.SetupGet(lib => lib[loadableType]).Returns(loadableType);

        ContextLoader tested = new ContextLoader();
        tested.setContextKnowledge(mocklib.Object);
        tested.loadContext(loadableType);

        IContextBase expected = new mockContext();
        IContextBase actual = tested.getCurrentContext();

        mocklib.VerifyGet( lib => lib[typeof(Context_Empty)]);
        Assert.AreEqual(expected.ToString(), actual.ToString());
    }

堆栈托架显示moq在查杀之前正在寻找它的来源 - 是吗?它实际上只有在d:\ Code \ moq \ src \ Source下安装源时才有效吗?这似乎并不严谨。 (编辑:amd它不是 - nunit只是通知我,我找不到文件,所以与错误无关)

我有合适的包裹吗?我选择了silverligth4,我正在使用我在那里找到的两个dll - 其他的都没有用,因为有些东西丢失了。

编辑:

为了说明问题更加清晰。 hiere是另一个失败的代码:

    [Test]
    public void mockDemo()
    {
        var crappy = new Mock<IDisposable>();
        IDisposable instance = crappy.Object; //Runtime Error
    }

这里是堆栈跟踪 - 手动重写,可能会发生打字错误

ContextLoader_Spec mockDemo()
Mock1 get_Object()
Mock1 OnGetObject()
Mock1 InitialiseInstance()
PexProtector Invoke()
Mock1 <InitializeInstance>b_32()
ProxyGenerator CreateInterfaceProxyWithoutTarget()
DefaultProxyBuilder CreateInterfaceProxyTypeWithoutTarget()
InterfaceProxyWithTargetGenerator GenerateCode()
InterfaceProxyWithoutTargetGenerator GenerateType()
InterfaceProxyWithTargetGenerator Init()
InterfaceProxyWithTargetGenerator CreateFields()

我不知道为什么会发生这种异常。

编辑:这似乎是known issue withSilverlight4 编辑:与其他版本NET35 / NET40 / NET40Castle / Silverlight4重试 - 都显示相同的错误。

1 个答案:

答案 0 :(得分:0)

切换到Rhino就像魅力一样。 Rhino can be downloadad单独或位于nunit testframework的lib文件夹中。

您所要做的就是将项目属性从.Net客户端配置文件切换到纯.Net配置文件,您就可以了。

这是一个Testsnippet,可以帮助您控制是否已经完成。

using System;
using NUnit.Framework;
using Rhino.Mocks;

namespace Test.selftest
{
    [TestFixture]
    class Framework_Test
    {
        [Test]
        public void ShouldCompileAndExecuteASimpleNUnitTest()
        {
            Assert.IsTrue(true);
        }

        [Test]
        public void ShouldVerifyRhinoMock()
        {
            ICloneable mock = MockRepository.GenerateMock<ICloneable>();
            mock.Expect(x => x.Clone()).Return(new Object()).Repeat.Times(1);
            mock.Clone();
            mock.VerifyAllExpectations();
        }
    }
}