C# 如何模拟亚音速';s简单假设

C# 如何模拟亚音速';s简单假设,c#,subsonic,subsonic3,rhino-mocks,C#,Subsonic,Subsonic3,Rhino Mocks,我试图用Rihino mock模拟亚音速SimpleRepository的Add方法,我使用的是IRepository界面,但我对模拟是新手,不知道如何从那里开始,这能做到吗?谢谢你的帮助。这取决于你想测试什么。您是否关心Add()方法是否被调用,还是只想设置一个可能被调用或不被调用的固定响应 如果您期待电话:- var mocks = new MockRepository(); var repo = mocks.StrictMock<IRepository>(): var myO

我试图用Rihino mock模拟亚音速SimpleRepository的Add方法,我使用的是IRepository界面,但我对模拟是新手,不知道如何从那里开始,这能做到吗?谢谢你的帮助。

这取决于你想测试什么。您是否关心Add()方法是否被调用,还是只想设置一个可能被调用或不被调用的固定响应

如果您期待电话:-

var mocks = new MockRepository();
var repo = mocks.StrictMock<IRepository>():

var myObj = CreateSampleObject(); 

using(mocks.Record())
{
    Expect.Call(repo.Add(myObj)).Return(myObj);
}

using(mocks.Playback())
{
    var target = CreateTarget(repo);
    target.DoSomething(myObj);
}

AdamRalph是正确的,但我更喜欢Rhino Mock的AAA语法:

// arrange
var repo = MockRepository.GenerateStub<IRepository>();
var myObject = CreateSampleObject();
repo.Stub(r => r.Add(myObj)).Return(myObj);

// act (this assumes that the call to "SomeMethod" on "SomeClass"
// returns the result of the IRepository.Add).
var someClass = new SomeClass(repo);
var result = someClass.SomeMethod();

// assert
Assert.AreSame(myObject, result);
//排列
var repo=MockRepository.GenerateStub();
var myObject=CreateSampleObject();
回购存根(r=>r.Add(myObj)).Return(myObj);
//act(假设对“SomeClass”上的“SomeMethod”的调用
//返回IRepository.Add的结果。
var someClass=新的someClass(回购);
var result=someClass.SomeMethod();
//断言
Assert.AreName(myObject,result);
// arrange
var repo = MockRepository.GenerateStub<IRepository>();
var myObject = CreateSampleObject();
repo.Stub(r => r.Add(myObj)).Return(myObj);

// act (this assumes that the call to "SomeMethod" on "SomeClass"
// returns the result of the IRepository.Add).
var someClass = new SomeClass(repo);
var result = someClass.SomeMethod();

// assert
Assert.AreSame(myObject, result);