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

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • HowcastFoodDrink

    HowcastFoodD

    21 EYLÜL 2010