开发者

How to mock Add method of subsonic's SimpleRepository

开发者 https://www.devze.com 2022-12-12 08:58 出处:网络
I\'m trying to mock the Add method of subsonic SimpleRepository with Rihino mocks, I\'m using the IRepository Interface but I\'m new to mocking and d开发者_如何学Pythonont know how to go from there, c

I'm trying to mock the Add method of subsonic SimpleRepository with Rihino mocks, I'm using the IRepository Interface but I'm new to mocking and d开发者_如何学Pythonont know how to go from there, can this be done? thanks for your help.


AdamRalph is correct, but I prefer the AAA syntax of Rhino Mocks:

// 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);


It depends what you want to test. Do you care if the Add() method is called or not, or do you just want to set up a canned response which may or may not be called?

If you expect the call:-

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);
}

If you don't care whether it is called or not, then use SetUpResult instead of Expect, e.g.

SetUpResult.For(rep.Add(myObj)).Return(myObj);
0

精彩评论

暂无评论...
验证码 换一张
取 消