Sinon callCount始终为零

时间:2019-07-24 23:11:41

标签: node.js mocha sinon

在我的节点js应用程序中有一个名为index.js的文件。下面是该文件的代码。

import {Directive, ElementRef, Input, OnChanges, SimpleChanges} from '@angular/core';

//Directive to that toggles focus from boolean value set with focusOn
@Directive({
  selector: '[focusOn]'
})
export class FocusOnDirective implements OnChanges {
  @Input('focusOn') setFocus: boolean;

  constructor(private hostElement: ElementRef) {}

  ngOnChanges(changes : SimpleChanges) {
    (!!changes.setFocus && !!changes.setFocus.currentValue) ?
      this.hostElement.nativeElement.focus() :
      this.hostElement.nativeElement.blur();
  }
}

为此文件添加了一个测试用例。在这种情况下,我试图验证run是否至少被调用一次。

function initiateProcess(pattern){
    run();
};

function run(){
    console.log('run called');  
}

module.exports ={initiateProcess,run}

但是callCount始终为零。我是西农的新手。我在这里做什么错了。

1 个答案:

答案 0 :(得分:1)

这实际上不是Sinon的问题,这实际上取决于JavaScript的工作方式。

initiateProcess引用run,该引用在您通过导出时在模块内部声明

module.exports = { initiateProcess, run }

正在导出的run函数 与在run内部调用的同一initiateProcess函数不同,它是一个副本。

要执行此操作,您需要确保模拟的run与在initiateProcess内部被调用的函数相同,这是您可以执行的操作:

module.exports = {
  initiateProcess(pattern) {
    this.run();
  }
  run() {
    console.log('run called');
  }
}