[英]How do I test javascript (Jasmine) in this case?
這是我要測試的修改后的簡短版本。
var Service = (function() {
function doStuff(command, package) {
var response = ""
switch(command) {
case "A":
response = a(package);
break;
case "B":
response = b(package);
break;
case "C":
response = c(package);
break;
default:
// should never get here
response = "NOPE!";
}
return response;
}
function a(package) {
// do stuff
}
function b(package) {
// do stuff
}
function c(package) {
// do stuff;
}
return {
doStuff: doStuff,
a: a,
b: b,
c: c
}
});
module.exports = Service;
因此,基本上,我正在嘗試編寫一個單元測試來測試doStuff方法,但是當遇到每種情況時,我只想對諸如a,b或c之類的方法執行間諜操作,而不是檢查返回值值,因為每個函數a,b和c都返回true或false。 因此,我要確保正確的案例是他的正確判斷,而不僅僅是測試是非題。
我在想辦法用當前編碼的方式來解決這個問題。 我在該類的測試文件中正在創建一個此類的新實例,我嘗試監視這些方法,但這沒有用,因為在此代碼中的實際實例上未調用它們,而是在本地調用它們。 間諜有可能這樣做嗎? 如果沒有,建議以這種方式進行測試的推薦方法是什么?
這不行嗎?
var service = new Service(); const aSpy = spyOn(service, 'a').and.returnValue(true); // setup the routing they way you want it service.command = "A"; var res = service.doStuff(someTestPackage); expect(aSpy).toHaveBeenCalledWith(someTestPackage); expect(res).toBeTruthy();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.