私はこのトピックに関する多くの他のQAを読んできましたが、私の問題の解決策はまだ見つかりません。私のケースを公開することに決めました。Moq.Mock <式<Func<T,bool> >> - Moqを使用してモックに式を設定する方法
私は、このインターフェイス
public interface IRepository<T> where T : class, IEntity
{
IQueryable<T> Find(Expression<Func<T, bool>> predicate);
T FindIncluding(int id, params Expression<Func<T, object>>[] includeProperties);
}
を持っており、これは私が使用してセットアップにモックをしようとしている私は、セットアップ
public PeopleController CreatePeopleController()
{
var mockUnitofWork = new Mock<IUnitOfWork>();
var mockPeopleRepository = new Mock<IRepository<Person>>();
mockPeopleRepository.Setup(r=>r.Find().Returns(new Person(){});
mockUnitofWork.Setup(p => p.People).Returns(mockPeopleRepository.Object);
return new PeopleController(mockUnitofWork.Object);
}
たいモックが含まれている方法の基本的な構造であり、この方法では:
public PeopleController CreatePeopleController()
{
var mockUnitofWork = new Mock<IUnitOfWork>();
var mockPeopleRepository = new Mock<IRepository<Person>>();
mockPeopleRepository.Setup(r=>r.Find(It.isAny<Expression<Func<Person,bool>>>()).Single()).Returns(new Person(){});
mockUnitofWork.Setup(p => p.People).Returns(mockPeopleRepository.Object);
return new PeopleController(mockUnitofWork.Object);
}
しかし、システムでは常に同じ例外 "System.NotSup portedException:Expressionが嘲笑オブジェクトに属していないメソッドを参照する.... "
また、私は私がセットアップモック使って表現ではないことを知っている私はMSTestをし、部品番号に
を使用していますことを追加したいと思います簡単ではありませんが、私にとっては非常に重要です。なぜなら、「Find」は私のアプリでたくさん使う方法なのですから。
エリックちょうどあなたのソリューションとその作業を実施。..あなたのためのおかげで助けて!!! :) – gustavotroconis
喜んで助けた。 :) –
@ gustavotroconisこの回答があなたの問題を解決した場合は、その横にあるチェックマークをクリックして受け入れることができます。より多くの質問をすると、あなたのアバターの下に「受け入れ率」が表示され、他の人があなたの質問に答えるよう促す%が高くなります。 –