2017-10-28 127 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