如何模拟subsonic的SimpleRepository的Add方法

发布于 2024-08-12 06:14:44 字数 111 浏览 2 评论 0原文

我正在尝试使用 Rihino 模拟来模拟亚音速 SimpleRepository 的 Add 方法,我正在使用 IRepository 接口,但我是模拟新手,不知道如何从那里开始,这可以完成吗?感谢您的帮助。

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 dont know how to go from there, can this be done? thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花桑 2024-08-19 06:14:44

AdamRalph 是正确的,但我更喜欢 Rhino Mocks 的 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);

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);
策马西风 2024-08-19 06:14:44

这取决于你想测试什么。您是否关心 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);
}

如果你不关心它是否被调用,那么使用 SetUpResult 而不是 Expect,例如

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

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文