我一直在寻找一些关于在aaa语法中使用Rhino Mocks 3.5+的不错的信息。我发现很多博客混合了新旧的东西,这似乎使得如何使用它变得更加困难。
如果有像早期版本那样的Rhino Mocks AAA小抄,那就太好了。您是否需要了解旧版本Rhino的所有信息才能实际使用新版本?我敢肯定,如果我是一名专家,我会喜欢Rhino的所有功能,但现在我只是在信息中游泳。任何指针或好的链接将是完全感谢!
发布于 2011-03-29 05:19:24
我已经写了一个Rhino Mocks Arrange / Act / Assert (AAA) Syntax Quick Reference。它包含从Ayende's web site和其他几个博客收集的关于这种语法样式的精简信息。
发布于 2010-01-25 16:29:59
我假设您熟悉official documentation,在我看来,它非常好用。我的建议是尝试使用Rhino,当你遇到一些更具体的问题时,搜索解决方案。我不认为有一个全面的Rhino模拟的小抄。我猜你会更幸运地问“我如何使用Rhino Mock做这个和那个”
编辑:嗯,当目标是AAA时,你不需要使用录制/回放。AAA涉及三个步骤:
。
IOmicronDll mockWrapper = MockRepository.GenerateMock<IOmicronDll>();
mockWrapper.Expect(wrapper => wrapper.Lock(1, ref errors)).OutRef(string.Empty).Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec(1, "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec("1", "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
Microsoft.Practices.Unity.UnityContainer c = new Microsoft.Practices.Unity.UnityContainer();
c.RegisterInstance<IOmicronDll>(mockWrapper);Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance();(Int deviceID) { Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance();{ if (g_Omicron == deviceID) g_Omicron = public Omicron m_UniqueIdentifier = Guid.NewGuid();m_Logger =public m_ID = deviceID;GetConfiguration();g_InstancesCount++;m_PollThread =新线程(新ThreadStart(DoPoll));m_PollThread.Start();}
。
Assert.AreEqual("CMC 56", omicron.Type);
mockWrapper.AssertWasCalled(wrapper => wrapper.Release(), options => options.Repeat.AtLeastOnce());也许上面的例子不是最好的,但可能会让你找到正确的方向。
发布于 2010-07-13 01:48:59
首先,确保您知道AAA中每个A的含义。你可能知道,但我会包括我的工作定义,以确保答案的完整性:
验证发生或没有发生的事情的地方
我喜欢在我的测试代码中添加注释,以提醒我思考每一件事。一个示例可能有助于澄清:假设我有一个服务层类,它使用两个提供程序层类,一个来自“旧”系统,另一个来自“新”系统;我正在测试将旧事物复制到新系统的方法是否对发现的每个旧事物调用一次"CreateThing“方法。
[Test]
public void Should_create_new_Thing_for_each_old_Thing()
{
// -----
// arrange
// hardcode results from old system provider
List<Thing> oldThings = new List<Thing> { ... };
// old system provider
var oldProvider = MockRepository.GenerateStub<IOldSystemProvider>();
oldProvider.Stub(m=>m.GetThings()).Return(oldThings);
// new system provider
var newProvider = MockRepository.GenerateStub<INewSystemProvider>();
// service object
var svc = new MyService(oldProvider, newProvider);
//-----------
// act
var result = svc.CopyThings();
//------------
// assert
oldThings.ForEach(thing =>
newProvider.AssertWasCalled(prov => prov.CreateThing(thing)));
}https://stackoverflow.com/questions/2124175
复制相似问题