ฉันต้องการเขียน UnitTest ด้วย Moq 4.14.7 วิธีที่จะทดสอบมีดังนี้:
public IFoo Get(Guid id)
{
Func<IFoo> getData = () => _repository.Get(id);
if (_cache.TryGetAndSet(vaultId, getData, out var result))
{
return result;
}
}
อธิบายสั้นๆ ครับ. ฉันมีคลาสแคชทั่วไป จะตรวจสอบในแคชหากมีเอนทิตีที่มี guid ที่ส่งผ่านอยู่ หากไม่เป็นเช่นนั้น จะมีการเรียกที่เก็บ
ตอนนี้ฉันมีการตั้งค่าแคชดังต่อไปนี้:
_cache.Setup
(
x => x.TryGetAndSet
(
_vaultId,
It.IsAny<Func<IFoo>>(),
out foo
)
)
.Returns(true);
จนถึงตอนนี้การทดสอบใช้งานได้ แต่ฉันยังไม่ครอบคลุม 100% เนื่องจากฟังก์ชั่นไม่ครอบคลุม
มีวิธีใดที่ดีกว่าการทำงานกับ It.IsAny
และรับความคุ้มครอง 100% ที่นี่
GetData
-func ดั้งเดิมของคุณไม่เคยถูกดำเนินการอย่างแน่นอน - และไม่ครอบคลุม - เนื่องจากคุณล้อเลียนฟังก์ชันการโทรเพียงฟังก์ชันเดียว -TryGetAndSet
- person HimBromBeere   schedule 18.01.2021_repo.Setup(x => x.Get(id)).Returns(It.IsAny<IFoo>);
ก่อนหน้านี้ แต่ก็ยังไม่ถูกเรียกเพราะฉันมีIt.IsAny<Func<IFoo>>()
ในการจำลองแคช - person BenGeba   schedule 18.01.2021TryGetAndSet
ด้วยสิ่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิงซึ่งจะไม่มีวันแตะต้องผู้รับมอบสิทธิ์เลย - person HimBromBeere   schedule 18.01.2021It.IsAny<>
a() => _repository.Setup(m => m.Get(id)).Returns(foo)
แล้ว แต่คาดว่า IFoo เป็นค่าส่งคืน แต่ได้รับ repo - person BenGeba   schedule 18.01.2021