SORU
25 Aralık 2009, Cuma


Adedi: non-geçersiz kılınabilir üye Geçersiz kurulum: x => x.GetByTitle("asdf")

Bu yöntemi bir birim test yapmaya düzeltebilirim bilmiyorum nasıl"" . GetByTitle

İşte benim tanımlar:

public class ArticleDAO :  GenericNHibernateDAO(IArticle, int>, IArticleDAO
{
    public IArticle GetByTitle(string title)
    {
        IQuery query = Session.CreateQuery("...")
        return query.UniqueResult<IArticle>();
    }
}

public interface IArticleDAO
{
    IArticle GetByTitle(string title);
}

birim testi:

[Test]
public void can_load_by_title()
{
    _mockDaoFactory.Setup(x => x.GetArticleDao())
                                .Returns(_mockArticleDao.Object);
    _mockArticleDao.Setup(x => x.GetByTitle("some title"))
                                .Returns(article1.Object);

    _articleManager.LoadArticle("some title");

    Assert.IsNotNull(_articleManager.Article);
}

Testi bana hata veriyor:

System.ArgumentException: Invalid setup on a non-overridable member:
x => x.GetByTitle("some title")

Güncelleme

[Setup] benim gibi:

[Setup]
public void SetUp()
{
     _mockDaoFactory = new Mock<IDaoFactory>();
     _mockArticleDao = new Mock<ArticleDao>();

     _articleManager = new ArticleManager(_mockDaoFactory.Object);    
}

CEVAP
25 Aralık 2009, Cuma


Sipariş için kontrol davranışı bir mock nesne (Adedi en az), ya da ihtiyaç için sahte bir arayüz, ya da olduğundan emin olun davranışı yapmaya çalıştığını kontrol işaretli sanal. Yorumlarınız, _mockArticleDao başlatmasını böyle bir şey yapılır ki anlıyorum:

_mockArticleDao = new Mock<ArticleDAO>();

Eğer böyle devam etmek istiyorsan, GetArticle yöntemi virtual işaretlemeniz gerekir:

public class ArticleDAO :  GenericNHibernateDAO(IArticle, int>, IArticleDAO
{
    public virtual IArticle GetByTitle(string title)
    {
        // ...
    }
}

Aksi takdirde (ve bu tavsiye ederim), arayüzü yerine alay ediyor.

_mockArticleDao = new Mock<IArticleDAO>();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DRDAnimation

    DRDAnimation

    28 EYLÜL 2012
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • The CGBros

    The CGBros

    20 AĞUSTOS 2011