我的方法有点复杂,需要经过充分测试。秘密酱的东西。好吧,也许不是很酷,但我不是百分百肯定如何设置这些东西。这种情况源自我之前的问题here。我没有使用过犀牛嘲讽,所以我仍然不好/不知道语法,所以请随意提出大量的建议。
Public Function GenerateAllNotifications(ByVal days As List(Of Integer)) As List(Of MailMessage) Implements INotificationService.GenerateAllNotifications
Dim someStuff = _someService.GetThingsThatExpireBetween(day1, day2)
'build some messages
Return messages
End Function
我的测试中的设置看起来像这样......我知道这是错误的
Dim fakeStuff = New SomeItem()
Dim fakeContext = New List(Of Provider)
fakeContext.Add(fakeStuff)
Dim someService = MockRepository.GenerateStub(Of ISomeService)()
someService.Stub(Function(x) x.GetThingsThatExpireBetween(30, 60)).IgnoreArguments().Return(fakeContext.AsQueryable)
_fakeNotificationService = New NotificationService(someService)
我想要完成的是从该服务中返回一个被执行的项目。业务规则是基于给定到期的消息集合。因此,如果给定实体在30天内到期,则该消息反映出,如果它是60,90,无论如何,这些都被放入消息中。我想我的问题是每次都需要让不同的对象回来(someitem)......?
答案 0 :(得分:0)
好像你正试图让你的模拟行为正确。如果您认为您的模拟而不是为您所测试的类的行为提供上下文,那么它可能会有所帮助。
然后你可以让你的模拟行为方式不同 - 无论参数如何 - 并检查你的类在这些不同的情况下是否表现得恰当。您将针对每个上下文进行新测试。我经常在上下文中的行为之后命名我的测试:
等,只有驼峰式,并且[Test]
归属。
这有帮助吗?如果没有,我可能误解了这个问题 - 道歉。