在我的节点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始终为零。我是西农的新手。我在这里做什么错了。
答案 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');
}
}