C# Rhino Mock:FailedRecorded期望值:IDateHelper.get_Now();
我正在调试这个不伦不类的Rhino Mocks错误: Rhino.Mocks.Exceptions.ExpectationViolationException:。。。预计为#0, 实际的#1 发现putingC# Rhino Mock:FailedRecorded期望值:IDateHelper.get_Now();,c#,unit-testing,mocking,rhino-mocks,C#,Unit Testing,Mocking,Rhino Mocks,我正在调试这个不伦不类的Rhino Mocks错误: Rhino.Mocks.Exceptions.ExpectationViolationException:。。。预计为#0, 实际的#1 发现putingRhinoMocks.Logger=newtextWriterExpectationLogger(Console.Out)在录制之前为我提供了更多信息: FailedRecorded期望值:IDateHelper.get_Now() 但我不知道如何解决这个问题,甚至不知道出了什么问题 代码如
RhinoMocks.Logger=newtextWriterExpectationLogger(Console.Out)
在录制之前为我提供了更多信息:
FailedRecorded期望值:IDateHelper.get_Now()
但我不知道如何解决这个问题,甚至不知道出了什么问题
代码如下所示:
IDateHelper dateHelper = mock.StrictMock<IDateHelper>();
DateTime now = new DateTime(2011, 12, 16);
Expect.Call(dateHelper.Now).Return(now).Repeat.Any();
...
public interface IDateHelper
{
DateTime Now { get; }
}
ExpectationViolationException发生在日期变量传递到另一个函数的几行之后。希望这会对您有所帮助。我必须同意@ledbutter,Expect符号是我认为更容易理解的
using System;
using NUnit.Framework;
using Rhino.Mocks;
namespace FluentConfigHelper.Test
{
[TestFixture]
public class StackOverflowTest
{
private IDateHelper _dateHelper;
public interface IDateHelper
{
DateTime Now { get; }
}
public class DateHelper : IDateHelper
{
public DateTime Now { get; set; }
}
public IDateHelper DateHelperLocal
{
get { return _dateHelper ?? (_dateHelper = new DateHelper()); }
set { _dateHelper = value; }
}
public DateTime MethodUnderTest()
{
return DateHelperLocal.Now.AddMonths(1);
}
[Test]
public void DateTimeTest()
{
IDateHelper dateHelper = MockRepository.GenerateStrictMock<IDateHelper>();
DateTime now = new DateTime(2011, 12, 16);
dateHelper.Expect(x => x.Now).Return(now);
DateHelperLocal = dateHelper;
var result = MethodUnderTest();
Assert.AreEqual(new DateTime(2012, 1, 16), result);
dateHelper.VerifyAllExpectations();
}
}
}
使用系统;
使用NUnit.Framework;
使用犀牛;
命名空间FluentConfigHelper.Test
{
[测试夹具]
公共类堆栈溢出测试
{
私人助理(日期助理);;
公共接口IDateHelper
{
日期时间现在{get;}
}
公共类DateHelper:IDateHelper
{
public DateTime Now{get;set;}
}
公共IDateHelperDateHelperLocal
{
获取{return\u dateHelper???(\u dateHelper=new dateHelper());}
设置{u dateHelper=value;}
}
public DateTime MethodUnderTest()
{
返回日期HelperLocal.Now.AddMonths(1);
}
[测试]
public void DateTimeTest()
{
IDateHelper dateHelper=MockRepository.GenerateStrictMock();
DateTime now=新的日期时间(2011,12,16);
Expect(x=>x.Now).Return(Now);
DateHelperLocal=dateHelper;
var result=MethodUnderTest();
Assert.AreEqual(新日期时间(2012,1,16),结果);
dateHelper.VerifyAllExpections();
}
}
}
所以您正在测试的方法应该调用IDateHelper。现在
,您能显示该代码吗?用代码更新了问题。感谢您查看我的问题:)谢谢,但是您也可以显示单元测试中的所有相关行吗?为什么不使用以下语法:dateHelper.Expect(d=>d.Now).Return(Now)代码>?
using System;
using NUnit.Framework;
using Rhino.Mocks;
namespace FluentConfigHelper.Test
{
[TestFixture]
public class StackOverflowTest
{
private IDateHelper _dateHelper;
public interface IDateHelper
{
DateTime Now { get; }
}
public class DateHelper : IDateHelper
{
public DateTime Now { get; set; }
}
public IDateHelper DateHelperLocal
{
get { return _dateHelper ?? (_dateHelper = new DateHelper()); }
set { _dateHelper = value; }
}
public DateTime MethodUnderTest()
{
return DateHelperLocal.Now.AddMonths(1);
}
[Test]
public void DateTimeTest()
{
IDateHelper dateHelper = MockRepository.GenerateStrictMock<IDateHelper>();
DateTime now = new DateTime(2011, 12, 16);
dateHelper.Expect(x => x.Now).Return(now);
DateHelperLocal = dateHelper;
var result = MethodUnderTest();
Assert.AreEqual(new DateTime(2012, 1, 16), result);
dateHelper.VerifyAllExpectations();
}
}
}