网站搜索

javascript - 我在过度测试功能中陷入困境


我在单元测试/集成测试的领域还是新手。我读过,为了为方法和类编写好的单元测试,你必须置身于不了解方法实现的情境中,并专注于方法的接口和逻辑

例如方法 add 接受 2 个参数并返回它们的和

所以这里有一个我必须为其编写测试的真实示例方法:

  matchLeague(summoner: SummonerTeammate): boolean {

    // check that maximum difference between summoners tiers is one tier
    if(Math.abs(this.summoner_league_info.tier - summoner.summoner_league_info.tier) > 1) {
      return false
    }

    return true;
  }

这里是我写的测试:

describe('match league algorithme', () => {

    function matchingHelper(tier1, tier2, excp) {
      let sum1: SummonerTeammate = new SummonerTeammate({
        summoner_league_info: {
          tier: tier1,
        }
      })

      let sum2: SummonerTeammate = new SummonerTeammate({
        summoner_league_info: {
          tier: tier2,
        }
      });

      expect(sum1.matchLeague(sum2)).toBe(excp)
    }

    test('should return true if players are in same tier', () => {
      matchingHelper(1, 1, true)
    })

    test('should return true if player1 is 1 tier below player 2 tier', () => {
      matchingHelper(1, 2, true)
    })

    test('should return true if player1 is 1 tier above player 2 tier', () => {
      matchingHelper(2, 1, true)
    })

    test('should return false if player 1 is more than 1 tier above player 2', () => {
      matchingHelper(3, 1, false)
      matchingHelper(7, 1, false)
      matchingHelper(6, 1, false)
    })

    test('should return false if player 1 is more than 1 tier below player 2', () => {
      matchingHelper(4, 6, false)
      matchingHelper(2, 6, false)
      matchingHelper(1, 6, false)
    })
  })

所以,我想知道的是,我的测试套件是否适合这个方法,或者我测试的案例是否过多或过少。