Qunit kullanarak birim testimin ne olması gerektiğine dair temel bir örnek:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" href="qunit/qunit-1.13.0.css">
<script src = "qunit/qunit-1.13.0.js"></script>
<script src = "../js/fuzzQuery.js"></script>
<script>
test("Fuzz Query Basics", function()
{
equal(fuzzQuery("name:(John Smith)"), "name:(John~ Smith~)");
equal(fuzzQuery("name:Jon~0.1"), "name:Jon~0.1");
equal(fuzzQuery("Jon"), "Jon~");
//etc
}
);
</script>
</head>
<body>
<div id="qunit"></div>
</body>
</html>
Şimdi bunun biraz tekrarlı olduğunu düşünüyordum.
Tüm girişleri / çıkışları bir diziye koyabilir ve onu bir döngüye sokabilir.
test("Fuzz Query Basics", function()
{
var equals = [
["name:(John Smith)", "name:(John~ Smith~)"],
["name:Jon~0.1", "name:Jon~0.1"],
["Jon", "Jon~"]
];
for (var i = 0; i<equals.length; i++)
{
equal(fuzzQuery(equals[i][0]), equals[i][1]);
}
}
);
Ve bu iyi çalışıyor.
Bu ikinci yöntem için düşünebileceğim tek avantaj, eğer gerçekten kullanmak istemediğiniz ortaya çıkarsa equal, bu değişikliği tek bir noktada yapmak daha kolay.
Okunabilirlik açısından, her ikisinin de kesin olduğunu düşünmüyorum, ancak muhtemelen ikincisini tercih ediyorum.
Daha da soyutlayarak, giriş / çıkış vakalarını değiştirmeyi kolaylaştırabilecek ayrı bir CSV dosyasına koyabilirsiniz.
Soru şu - bu tür birim testleri yazmayla ilgili genel sözleşmeler nelerdir?
Bunları dizilere yerleştirmemeniz için bir neden var mı?