美文网首页
记一次测试bug的解决过程

记一次测试bug的解决过程

作者: 吴一晏 | 来源:发表于2019-06-15 14:02 被阅读0次
在写测试用例的时候,发现了一个报错,虽然测试用例都通过了,但是看到有报错还是很难受的 报错信息.jpg

在目前我的所有代码中,只有在toast.vue里写了style

setLineHeight() {
      this.$nextTick(() => {
        this.$refs.line.style.height = `${
          this.$refs.toast.getBoundingClientRect().height
        }px`;
      });
    }

而且这个函数只在mounted中执行了一次:

mounted() {
    this.setLineHeight();
    this.execAutoClose();
  }

于是我在mounted、和setLineHeight中都log了这个style

mounted() {
    console.log(this.$el.outerHTML)
    this.setLineHeight();
    this.execAutoClose();
  }

setLineHeight() {
      this.$nextTick(() => {
        console.log(this.$refs)
        console.log(this.$refs.line)
        this.$refs.line.style.height = `${
          this.$refs.toast.getBoundingClientRect().height
        }px`;
      });
    }

发现了this.$refs.lineundefined
因为后两个log是在nextTick中执行的,和第一个log存在一点点的时间间隙

再看我的测试代码

it('接受 closeButton',() => {
            const callback = sinon.fake();
            const Constructor = Vue.extend(Toast)
            const vm = new Constructor({
                propsData: {
                    closeButton: {
                        text: '关闭他',
                        callback,
                    }
                }
            }).$mount()
            let closeButton = vm.$el.querySelector('.close')
            expect(closeButton.textContent.trim()).to.eq('关闭他')
            closeButton.click()
            expect(callback).to.have.been.called
        })

发现了在mounted 后立马接了一个closeButton.click() ,触发了我写的关闭函数,把标签都摧毁了

close() {
      this.$el.remove();
      this.$emit("close");
      this.$destroy();
    }

所以经过分析,是click触发关闭函数太快了,所以this.$refs.line的结果是undefined

因此解决方法就是把click放在一个setTimeout函数里

setTimeout(() => {
                closeButton.click()
                expect(callback).to.have.been.called
                done() //测试用例异步需要执行一个done
            },200) 

这样就通过了测试用例,而且还没有讨厌的报错,强迫症患者舒服了。

相关文章

  • 记一次测试bug的解决过程

    在目前我的所有代码中,只有在toast.vue里写了style : 而且这个函数只在mounted中执行了一次: ...

  • Caused by: java.lang.IllegalStat

    经测试可以解决bug

  • 谈测试(3):问题单的处理

    在测试的过程中,测试人员对发现的问题(bug)进行记录跟踪,除了对于问题本身的解决非常重要之外,也是衡量测试和开发...

  • 2016/12/10 周六

    GET 中山与测试沟通,确认几个bug。 沟通bug解决情况。 确认 bug 修正情况,mantis修改bug状态...

  • 软件测试---BUG的生命周期

    测试人员最本质的工作就是寻找bug,提交bug、验证bug、推进bug的解决,直至软件达到发布的标准,提高软件的质...

  • 三种bug定位方法

    1、定位bug产生的过程 测试用例的执行,基本上是程序运行过程bug产生的开始,若测试结果与期望结果有出入,即出现...

  • 周记:2019年第31周(7.29—8.4)

    1 工作: 没啥新意,一直在测试-发现bug-解决bug-继续测试的循环中 2 学习: 《Deep Le...

  • 记一个BUG的解决过程

    问题 Gem版本:rails 4.2.5activerecord-oracle_enhanced-adapter ...

  • 记一次HuaWei p9输入法的bug

    记一次HuaWei p9输入法的bug 今天刚上班,刚跟测试小姐姐打了个招呼,小姐姐反手就给我丢了一个bug,我....

  • 性能瓶颈分析案例

    性能分析案例一 在性能测试过程中,瓶颈犹如功能测试的bug,瓶颈的分析犹如bug的定位。性能测试工程师好比医生,...

网友评论

      本文标题:记一次测试bug的解决过程

      本文链接:https://www.haomeiwen.com/subject/bdlbfctx.html