我有一种方法,我必须将其绘制到接口并编写用于搜索nullPointerExc的测试。方法如下:
boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) {
return !currentGroupAdm.getDocs().equals(groupAdm.getDocs());
}
getDocs方法中的某处为空。
我使用方法创建了接口Changer
boolean hasDocsChangedRequired();
然后我将其实现为使用与之前使用SOLID规则相同的body方法进行分类
我有一个疑问,如何使用嘲笑者来更好地编写测试以完全覆盖此布尔函数?
答案 0 :(得分:0)
方法的输出
boolean hasDocsChangedRequired (GroupProvider currentGroupAdm, GroupProvider groupAdm) {
return !currentGroupAdm.getDocs().equals(groupAdm.getDocs());
}
仅取决于您的两个输入对象。
换句话说:您只需要 提供输入对象,这些对象将提供您想要针对特定测试提供的内容。含义:您可能想编写一个测试,其中currentGroupAdm.getDocs()
给出等于groupAdm.getDocs()
的值,而其中两次调用给出不相等的结果。
理想情况下,您无需在此处嘲笑任何东西。
答案 1 :(得分:0)
@pawel,您可以像这样编写测试以检查您的功能,我假设该功能不是静态的。 如果要使其静态,则只需删除这两行
#My alert
[{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"455"},{"BillNo":"4353","BillDetails":"my bill","Amount":"45"},{"BillNo":"43","BillDetails":"my bill","Amount":"600"}]
<script>
$("#btnjson").click(function () {
var array1 = [];
$("tbody tr").each(function () {
//var amount = $(this).find('td').eq(2).text().trim();
//if (!isNaN(amount) && parseFloat(amount) > 0) {
var firstTableData = {};
firstTableData.BillNo = $(this).find('td').eq(0).text().trim();
firstTableData.BillDetails = $(this).find('td').eq(1).text().trim();
firstTableData.Amount = $(this).find('td').eq(2).text().trim();
array1.push(firstTableData);
//}
});
{
jQuery.get( "/jsondata/", { data: array1 } );
alert(JSON.stringify(array1));
};
//e.preventDefault();
});
});
</script>
Bill No: <input type="text" name="billno" id="billNo" autocomplete="off">
Amount: <input type="text" name="amount2" id="amnt" pattern="[0-9]+" title="please enter amount" autocomplete="off">
<br>
Bill Details: <input type="text" id="billDetails" name="billdetails" style="margin: 1px 0px 20px; width: 850px; height: 42px;" autocomplete="off">
<button type="button" id="btnAdd" class="button" value="Add">Add</button> <button type="button" id="btn2" class="button" value="Complete all entries">Complete All entries</button>
<br><br>
<table name="txt" id="tempResult" align="center">
<thead>
<tr>
<th>Bill No</th>
<th>Bill Details</th>
<th>Amount</th>
<th>Action</th>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td></td>
<td>Total : <span id="total"></span></td>
</tr>
</tfoot>
</table>
<input id="btnjson" type="submit" value="ok" /><br />
#views.py
@csrf_exempt
def jsdata(request):
b_details = request.POST['']
data = json.loads(list(array1))
for billno in data():
print(billno)
#models
class Mvouchar(models.Model):
related = models.ForeignKey(Signs, on_delete=models.CASCADE, null=True, blank=True)
bill_no = models.CharField(max_length=80, null=True, blank=True)
bill_details = models.CharField(max_length=1000, null=True, blank=True)
am = models.CharField(max_length=30, null=True, blank=True)
并且代替“ changer”,您调用了相应的Implemented类。 希望这会有所帮助。
@InjectMocks
ChangerImpl changer;