La seconde assertion exécute jamais dans le test unitaire ci-dessous:Est-ce que Moq ignore les espaces de noms lors de la configuration de faux?
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.
}
}
}
On dirait la mise en place < Obtenir Bar.MyClass >() écrasez la configuration pour Get <Foo.MyClass>(). Cela signifie-t-il que Moq ignore les espaces de noms Foo et Bar lors de la configuration Get <T>()? Y at-il un moyen de contourner cela sans renommer les classes MyClass et sans implémenter IRepo? J'utilise Moq 3.1.416.3.
Mise à jour: Cela ressemble à fixed pour la prochaine version.
Merci. Je vais le signaler quand j'ai une chance. –
Problème signalé: http://code.google.com/p/moq/issues/detail?id=187 –