鴨舌試圖測試,它返回使用RhinoMocks 3.6ArgumentNullException與RhinoMocks 3.6
[TestMethod]
public void GetItems_Returns_ActionItemsList()
{
// arrange
var mockRepository = MockRepository.GenerateMock<IActionItemRepository>();
mockRepository.Stub(s => s.Select()).Return(GetFakeActionItems());
var service = new ActionItemQueueService(mockRepository);
// act
var actual = service.GetItems();
mockRepository.VerifyAllExpectations();
// assert
Assert.IsInstanceOfType(actual, typeof(IList<ActionItem>));
}
房地產simplle右一個簡單的IList服務層的方法? GetFakeActionItems方法供參考;
internal IQueryable<ActionItem> GetFakeActionItems()
{
return new List<ActionItem> {
new ActionItem{
Id = 5,
ClientName = "Bank of American Corporation",
ActionNeeded = RequiredAction.Change,
RecordIndicator = "ROI",
RequestDate = DateTime.Now.AddDays(-3)
}
} as IQueryable<ActionItem>;
}
下面是測試中的類和方法...
public class ActionItemQueueService : IActionQueueService
{
private readonly IActionItemRepository _actionItemRepository;
public ActionItemQueueService(IActionItemRepository actionItemRepository)
{
_actionItemRepository = actionItemRepository;
if (_actionItemRepository == null)
{
throw new ArgumentNullException("ActionItemRepository");
}
}
public IList<Model.ActionItem> GetItems()
{
return _actionItemRepository.Select().ToList<Model.ActionItem>();
}
}
沒有什麼野生.... 當我運行我的測試,我得到一個ArgumentNullException當GetItems()方法被調用當_actionItemRepository.Select()觸發。值不能爲空。 參數名稱:來源。
困惑和困惑,想知道如果有人有任何洞察到我失蹤。
非常感謝!
你不是應該做一些像 fakeItems = GetFakeActionItems(); ...存根(...)。返回(fakeItems)?技術上是 – Mathias 2010-07-21 19:03:08
?當然。但是,對於使用相同的ArgumentNullException爆炸的測試方法並沒有什麼不同。 :( – 2010-07-21 19:08:46
是否有一個原因,你爲什麼傳遞null在MockRepository.GenerateMock(null)? –
Mathias
2010-07-21 19:09:22