[英]Ninject 2.0 - binding to a object that uses the same interface more than once?
[英]Mocking same interface more than once in Rhino
我想多次模拟相同的界面。 下面的代码演示了我认为阻止了我的事情。
我已经阅读了一遍,找不到解决方案。 似乎无法区分_mockOne和_mockTwo。
public interface IDoSomething
{
}
[TestFixture]
class RhinoTest
{
private IDoSomething _mockOne;
private IDoSomething _mockTwo;
[SetUp]
public void SetUp()
{
_mockOne = MockRepository.GenerateMock<IDoSomething>();
_mockTwo = MockRepository.GenerateMock<IDoSomething>();
var somethings = new Dictionary<string, IDoSomething>
{
{"one", _mockOne},
{"two", _mockTwo}
};
//Pass this dictionary to a constructor for use in tests
}
}
如果调试代码,则会发现两个对象具有相同的标识符。
我意识到这可能与不良抽象有关,但如果有解决办法,它将对我们项目的当前位置确实有帮助。
提前谢谢了。
原来,我被应用程序的复杂性弄得一团糟。
我实际上是一个平等问题。 我期望的参数是复杂的对象,实际上Assert.AreEqual(...);
失败Assert.AreEqual(...);
希望在这种情况下加快其他人的速度。 这是一个失败的测试。
[Test]
public void Test()
{
var expectedInput = new Object1 { DeeperObject = new Object2 { MyString = "Hello World" } };
const string expectedOutput = "Hello Matt!";
_mockOne.Expect(s => s.ReturnSomething(expectedInput))
.Return(expectedOutput);
var actualInput = new Object1 { DeeperObject = new Object2 { MyString = "Hello World" } };
var actualOutput = _mockOne.ReturnSomething(actualInput);
Assert.NotNull(actualOutput);
}
要解决此问题,需要特别匹配参数属性。
_mockOne.Expect
开头的行替换为:
_mockOne.Expect(s => s .ReturnSomething(Arg<Object1> .Matches(o => o.DeeperObject.MyString == expectedInput.DeeperObject.MyString))) .Return(expectedOutput);
做完了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.