簡體   English   中英

在這種情況下,如何測試javascript(茉莉花)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM