如果代码严重属于外部库,并且在其每个方法中调用一些外部库函数,如何对代码进行单元测试。 如果一切都要模仿,那么像伊斯坦布尔这样的代码覆盖范围并不算这些线条被嘲笑。谁有参与外部依赖和库的单元测试经验,最佳实践是什么?
例如,我们有2个内部函数和3个外部库函数。 如果嘲笑那些外部的,那么伊斯坦布尔并不会将这些行计算为覆盖范围。
function internalFoo1(input) {
var result = internalFoo2(input*2);
var finalResult = externalLibraryBar1(result);
return result;
};
function internalFoo2(value) {
var operation = externalLibraryBar2(value*2);
var response = externalLibraryBar3(operation);
return response;
}
如何为internalFoo1()编写测试,以便单元测试将覆盖其所有代码行,以及internalFoo2()1。
答案 0 :(得分:2)
理想情况下,您不应该测试外部库,这不是您的工作。
在这种情况下,您可以使用间谍并查看是否已调用该库。 http://jasmine.github.io/2.2/introduction.html#section-Spies
e.g。取自Jasmine文档:
<div id="myModal" class="modal">
<span class="close">×</span>
<img class="modal-content" id="img01">
<div id="caption"></div>
</div>
<script>
var modal = document.getElementById('myModal');
var span = document.getElementsByClassName("close")[0];
span.onclick = function() {
modal.style.display = "none";
}
var images = document.getElementsByTagName('img');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
var i;
for (i = 0; i < images.length; i++) {
images[i].onclick = function(){
modal.style.display = "block";
modalImg.src = this.src;
modalImg.alt = this.alt;
captionText.innerHTML = this.nextElementSibling.innerHTML;
}
}
</script>