jsMockito:如何运行回调模拟?

时间:2014-03-03 13:17:34

标签: javascript callback 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?"

欢迎任何想法。

1 个答案:

答案 0 :(得分: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();
}