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

  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011
  • FND Films

    FND Films

    2 Mayıs 2006
  • trickycharms

    trickycharms

    6 Aralık 2013