2014-03-03 9 views
0

我正在學習如何使用jsMockito編寫完美的代碼。那麼,您能否告訴我如何運行提供給服務的回調?jsMockito:如何運行回調發送到模擬?

這裏是我的類:

function MyClass(service) { 
    this.service = service; 
} 

MyClass.prototype.doSomething = function() { 
    this.service.doIt(function() { 
     console.log("How to run this function while running tests?"); 
    }) 
} 

這裏是我的測試:

var MyClassTest = TestCase("MyClassTest"); 

MyClassTest.prototype.testMyClass = function() { 
    this.service = mock(Service); 
    this.myClass = new MyClass(this.service); 
    this.myClass.doSomething(); 
} 

所以,我需要看到日誌消息: "How to run this function while running tests?"

任何想法都歡迎。

回答

0

最後我找到了解決方案。

我們需要創建doItCallback

function MyClass(service) { 
    this.service = service; 
} 

MyClass.prototype.doItCallback = function() { 
    console.log("How to run this function while running tests?"); 
} 

MyClass.prototype.doSomething = function() { 
    this.service.doIt(this.doItCallback); 
} 

此外,我們需要更新模擬:

var MyClassTest = TestCase("MyClassTest"); 

MyClassTest.prototype.testMyClass = function() { 
    this.service = mock(Service); 
    this.myClass = new MyClass(this.service); 
    var myClass = this.myClass; 
    when(this.service).doIt().then(function() { 
     myClass.doItCallback(); 
    }); 
    this.myClass.doSomething(); 
}