2009-06-04 188 views
1

我是新来嘲笑,所以我需要一点关于如何嘲笑HttpPostedFileBase犀牛嘲笑的指导。我想验证我的ToByteArray()扩展按预期工作,这是我到目前为止有:嘲笑HttpPostedFileBase与犀牛嘲笑

[Test] 
    public void Should_return_a_byte_array_with_a_length_of_eleven() 
    { 
     // Arrange 
     var stream = new MemoryStream(System.Text.Encoding.Default.GetBytes("TestContent")); 
     var httpPostedFileBase = MockRepository.GenerateMock<HttpPostedFileBase>(); 

     httpPostedFileBase.Expect(x => x.InputStream).Return(stream); 
     httpPostedFileBase.Expect(x => x.ContentLength).Return(11); 

     // Act 
     var byteArray = httpPostedFileBase.ToByteArray(); 

     // Assert 
     Assert.That(byteArray.Length, Is.EqualTo(11)); 
    } 

我可以告诉大家,值获取设置,而是由时间我extensionmethod得到HttpPostedFileBase它已经失去了所有的价值。任何帮助将非常感激。

/的Kristoffer

回答

2

只要有可能,应避免为了嘲讽来验证你的代码是你所期望的。相反,有利于对某些特定输入进行测试,输出结果就是您所期望的。

这就是说,你的例子缺少一些关键的东西。当您使用模拟考试,你需要告诉他们,当你设置完期望通过调用(否则他们将记录所有的方法调用和诸如此类的进一步预期):

httpPostedFileBase.Replay(); 

终于在断言阶段,验证您的期望:

httpPostedFileBase.VerifyAllExpectations(); 

另请注意,使用Rhino,您只能模拟虚拟的方法和属性。

+0

感谢您的回复! 我试过这个,但我仍然在“预计:11但是:0”。在ToByteArray()和ToByteArray()之后调用ToByteArray()和VerifyAllExpectations()之前,我放置了Replay()。 我以前听说过有关嘲笑的观点,但我不确定我是否会以另一种方式验证这一点。你会如何做到这一点? – 2009-06-04 12:36:24