2017-10-28 128 views
1

看來,覆蓋面不與我想測試功能正確:打字稿覆蓋率似乎不正確與TSC

public isSelfTweet = function(tweet: Tweet, twitterScreenName: string) { 
    if(null == tweet || null == tweet.user || null == tweet.user.screen_name) { 
     return false; 
    } 
    if(tweet.user.screen_name.toLowerCase() === twitterScreenName) { 
     return true; 
    } 
    return false; 
} 

我寫的三個測試和我有100%的覆蓋率:

  • 鳴叫= NULL,twitterScreenName = 「TOTO」
  • 鳴叫與SCREEN_NAME = 「TOTO」,twitterScreenName = 「TOTO」
  • 鳴叫與SCREEN_NAME = 「TOTO」,twitterScreenName = 「短裙」

以下是對我來說似乎不正確的報道。我從來沒有測試鳴叫不爲空,但tweet.user空例如

enter image description here

在我的包JSON:

"nyc": "^11.2.1", 

回答

0

究竟你認爲是不是工作?

當我嘗試Typescript Playground中的以下內容時,測試有效。順便說一句,你不能叫isSelfTweet與空,因爲你宣佈它必須是Twitter消息...

interface Tweet { 
    user:User 
} 

interface User { 
    screen_name:string 
} 

class Test { 
    public isSelfTweet(tweet: Tweet, twitterScreenName: string) : boolean { 
     if (tweet.user) { 
      if (tweet.user.screen_name) { 
       if (tweet.user.screen_name.toLowerCase() === twitterScreenName) { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 
} 

let t = new Test() 
let tweet = { user: {screen_name:"willy"}} 

let test1 = t.isSelfTweet(tweet, "willy") 
console.log(test1) // returns true 

let test2 = t.isSelfTweet(tweet, "wally") 
console.log(test2) // returns false 
+0

嗨,這不是方法,但更多的覆蓋面的結果。它表示100%的覆蓋範圍,但我從不測試第三個OR條件。 – Max

+0

「它表示100%的覆蓋率」......究竟是什麼表示100%的覆蓋率?你使用測試框架?無論如何,您可以按照以下方式重寫測試^ – Kokodoko