2011-01-09 14 views
0

このテストに失敗したのはなぜですか?ユニットをrhinoモックで汎用テストする

[TestMethod] 
    public void Can_show_next_event() 
    { 
     // Arrange 

     var eventsRepo = MockRepository.GenerateStub<IRepository<Event>>(); 

     Event nextEvent = new Event{ 
             ID = 2, 
             Title = "Test Event", 
             Date = DateTime.Now.AddDays(2) 
            }; 

     eventsRepo.Stub(x => x.Find(y => y.Date > DateTime.Now)) 
        .Return(nextEvent); 

     // Act 
     var controller = new EventsController(eventsRepo); 
     var result = controller.Index() as ViewResult; 

     // Assert 
     Assert.IsNotNull(result); 
     Assert.AreEqual("Details", result.ViewName); 

    } 

最後の行でテストが失敗します。リポジトリが私の望むものを返さないようです。

がここにindexアクション

public ActionResult Index() 
{ 
    var model = _eventsRepo.Find(x => x.Date > DateTime.Now); 
    return model != null ? View("Details", model) : View("NoEvents"); 
} 

は、ここで私はサイとからかっに新たなんだ、私の一般的なリポジトリのインターフェース

public interface IRepository<T> where T: class 
{ 
    IQueryable<T> GetAll(); 
    IEnumerable<T> GetAll(Expression<Func<T, bool>> predicate); 
    T GetById(int id); 
    T Find(Expression<Func<T, bool>> predicate); 
    void Add(T item); 
    void Delete(T item); 
    void Save(); 
} 

だだ、私が間違って何をやっていますか?事前に

おかげ.IgnoreParametersを追加

答えて

0

てみてください()この行に:

eventsRepo.Stub(x => x.Find(y => y.Date > DateTime.Now)) 
        .IgnoreParameters() 
        .Return(nextEvent); 

二つのサイドノート:あなたの関数"T Find(Expression<Func<T,bool>> predicate)

は、だけではなく、Func<T,bool>Predicate<T>を使用することができます。 2つは基本的に同じです

まだ持っていない場合は、「TheマニングのRoy Osherove著「ユニット・テストの芸術」 http://www.manning.com/osherove/

彼はRhino.Mocks

用いユニットテストサンプルのいくつかの章の価値を提供します
関連する問題