FakeItEasyを使用して偽のnHibernateセッションを自分のリポジトリに挿入し、テスト内で事前に定義されたオブジェクトのリストを返したいとします。誰もこれをやる経験がありますか?ここでFakeItEasyとのnHibernateセッションのフェイク
は、例のテストです。何かアドバイスを事前に
public IEnumerable<Tank> GetTanks()
{
var tanks = Session.CreateCriteria(typeof(Tank)).List<Tank>();
return tanks;
}
ありがとう:
[TestFixture]
public class ProductionRepositoryTester
{
private ProductionRepository _productionRepository;
[SetUp]
public void SetupFixture()
{
const string propertyNumber = "123";
Tank tank = new Tank { PropertyNumber = propertyNumber };
var session = A.Fake<ISession>();
var sessionFactory = A.Fake<ISessionFactory>();
A.CallTo(session).WithReturnType<IList<Tank>>().Returns(new List<Tank> { tank });
_productionRepository = new ProductionRepository(session, sessionFactory);
}
[Test]
public void ProductionRepositoryCanGetTanks()
{
var tanks = _productionRepository.GetTanks();
Assert.AreNotEqual(0, tanks.Count(), "Tanks should have been returned.");
}
}
そしてここでは、実際のProductionRepositoryクラス内の呼び出しです!
素晴らしく見えること!私はまもなくそれを試してみますが、nHibernate LINQプロバイダを使用していて、単にsession.Queryを呼び出す状況には疑問があります。().ToList(); 。この場合、拡張メソッドのためにFakeItEasyが失敗します。 –
jdscolam