2009-07-06 2 views
0

Второе утверждение никогда не выполняется в тесте на единицу ниже:Мок игнорирует пространства имен при настройке mocks?

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. 
     } 
    } 
} 

Похоже настройка Получить <Bar.MyClass>() переписывает настройки для Get <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 –

Смежные вопросы