2012-03-08 59 views
15

假设我有一个函数如下用茉莉花来在功能上的变量窥探

function fun1(a) { 
    var local_a = a; 
    local_a += 5; 
    return local_a/2; 
} 

有没有一种方法来测试local_a的是它应该是什么(例如,在第一行的值码)?我对茉莉花有点新,所以我被卡住了。提前致谢。

回答

15

不是。你可以做以下,但:中fun1()

测试结果:

expect(fun1(5)).toEqual(5); 

确保它实际上是调用(有用的,如果它发生过的事件),也测试结果:

var spy = jasmine.createSpy(window, 'fun1').andCallThrough(); 
fire_event_calling_fun1(); 
expect(spy).toHaveBeenCalled(); 
expect(some_condition); 

真正重现全功能检查中间结果:

var spy = jasmine.createSpy(window, 'fun1').andCallFake(function (a) { 
    var local_a = a; 
    expect(local_a).toEqual(a); 
    local_a += 5; 
    expect(local_a).toEqual(a+5); 
    return local_a/2; 
}); 
fun1(42); 
expect(spy).toHaveBeenCalled(); 
+0

我有点怀疑这是事实。但感谢您的详细解答。第二种方法对我来说是新的! – 2012-03-08 17:28:46

+0

啊,很高兴你喜欢它。你可以在https://github.com/pivotal/jasmine/wiki/Spies和http://pivotal.github.com/jasmine/jsdoc/symbols/jasmine.Spy.html查看更多关于间谍的信息。 – ggozad 2012-03-08 17:34:54