Ben diğerleri arasında, aşağıdaki yöntem ile işler uygulama bir Birimi vardır:- Moq
T Single<T>(Expression<Func<T, bool>> expression) where T : class, new();
ve böyle Örneğin, diyoruz:
var person = _uow.Single<Person>(p => p.FirstName == "Sergi");
Single
yönteminin FirstName == "Sergi"
argümanı ile çağrıldığını nasıl doğrulayabilirim?
ben aşağıdakileri denedim ama boşuna: folowing hata
// direct approach
session.Verify(x => x.Single<Person>(p => p.FirstName == "Sergi"));
// comparing expressions
Expression<Func<Person, bool>> expression = p => p.FirstName == "Sergi");
session.Verify(x => x
.Single(It.Is<Expression<Func<Person, bool>>>(e => e == expression));
Hepsi Sonuç: nasıl
Expected invocation on the mock at least once, but was never performed
herhangi bir fikir olduğu yapılabilir? Ben versiyonu Nuget dan 4.0.10827.0
UPDATE son Moq kullanıyorum:
Ne görüyorum olduğunu Belirli Bir örnek ben lambda, Verify
eser içindeki dize hazır her kullandığınızda. Değişkenleri karşılaştırdığım anda başarısız olur. Tipik bir örnek:
// the verify
someService.GetFromType(QuestionnaireType.Objective)
session.Verify(x => x.Single<Questionnaire>(q =>
q.Type == QuestionnaireType.Objective));
// QuestionnaireType.Objective is just a constant:
const string Objective = "objective";
// the method where it's called (FAILS):
public Questionnaire GetFromType(string type)
{
// this will fail the Verify
var questionnaire = _session
.Single<Questionnaire>(q => q.Type == type);
}
// the method where it's called (PASSES):
public Questionnaire GetFromType(string type)
{
// this will pass the Verify
var questionnaire = _session
.Single<Questionnaire>(q => q.Type == QuestionnaireType.Objective);
}
Nasıl Verify
gelip en kısa sürede lambda ifadede yöntem parametresini kullanın olarak başarısız?
Bu testi yazmak için uygun yol ne olurdu?
Cevabınız için çok teşekkürler. Daha iyi bir kelime olmaması için yeni er ... bulgularına dayanarak sorumu güncelledim. Herhangi bir fikir? –
Sorunu, sorunun ne olabileceğini ele almak için güncelledim. Bu gerçekten 'QuestionnaireType.Objective' türüne bağlıdır. ToString() 'i kullanırsanız, farklı türlerde olduklarını göreceksiniz. –
Tekrar teşekkürler, sanırım mantıklı. Peki bu testi yazmanın en uygun yolu ne olurdu? Bu durumda, "doğrudan yaklaşım" için daha temiz bir kod yerine bir araç yerine alay etmenin ve engelin ... –