2009-07-06 7 views
0

第二の主張は、下のユニットテストで実行されることはありません:モックはモックを設定するときに名前空間を無視しますか?

namespace Foo { 
    public class MyClass { 
    } 
} 

namespace Bar { 
    public class MyClass { 
    } 
} 

namespace Quux { 
    public interface IRepo { 
     object Get<T>() where T : new(); 
    } 
} 

namespace Tests { 
    [TestFixture] 
    public class MyTests { 
     private Mock<Quux.IRepo> repo = new Mock<Quux.IRepo>(); 

     [SetUp] 
     public void Setup() { 
      repo.Setup(r => r.Get<Foo.MyClass>()).Returns(new Object()); 
      repo.Setup(r => r.Get<Bar.MyClass>()).Returns(new Object()); 
     } 

     [Test] 
     public void Test() { 
      Assert.IsNotNull(repo.Object.Get<Foo.MyClass>()); 
      Assert.IsNotNull(repo.Object.Get<Bar.MyClass>()); // Never reached. 
     } 
    } 
} 

は、Get <Bar.MyClass>()を設定するように見える<Foo.MyClass>を()を取得するための設定を上書きします。これはMoqが名前空間FooとBarを無視することを意味しますか?Get <T>()? MyClassクラスの名前を変更したり、IRepoを実装したりせずに、これを回避する方法はありますか?私はMoq 3.1.416.3を使用しています。

更新:これは次のリリースではfixedのようです。

答えて

1

Moqは名前空間を無視しません。 これはバグのようです。 報告する場所はhttp://code.google.com/p/moq/issues/entry

+0

です。私はチャンスがあるときに報告します。 –

+0

問題が報告されました:http://code.google.com/p/moq/issues/detail?id=187 –

関連する問題