私はジャスミンから喜びを得ていません。時計。私の期待は、コードが時計オブジェクトをモックアウトし、setTimeoutで指定された間隔を超えてティックを設定すると、setTimeoutイベントをトリガーすることですが、これは機能していないようで、欠陥を見つけることができません。私のコードは、同じクロック制御動作を適用している他のコードと並行しているようです。
背景:「callback」関数は、this.action.state()をConstants.state.Readyに設定します。実行後は、Constants.state.WAITINGにする必要があります。ノックアウトオブザーバブルを使用していることに注意してください。状態は、値を取得するためにfxとして呼び出されることになっています。
describe "Redis GET Action", () ->
beforeEach () ->
jasmine.Clock.useMock();
this.getReturnValue = getReturnValue = "Some jasmine values from redis"
clientStub =
get: (key,callback) ->
if callback?
setTimeout(callback(undefined, getReturnValue),1500)
GET: (key,callback) ->
if callback?
setTimeout(callback(undefined, getReturnValue),1500)
this.action = new RedisGetAction(
client: clientStub
key: "Standard"
)
it "should return a object", () ->
expect(this.action).toEqual(jasmine.any(Object))
requiredMethods = ['state','data','params'];
requiredMethods.forEach (methodName) ->
it "should have public "+methodName+" method", () ->
expect(this.action[methodName]).toBeDefined();
it "should initialize with public accessible state of #{Constants.state.WAITING}", () ->
expect(this.action.state()).toEqual(Constants.state.WAITING)
jasmine.Clock.tick(1501);
expect(this.action.state()).toEqual(Constants.state.READY)
結果:失敗:
1) should initialize with public accessible state of waiting
Message:
Expected 'ready' to equal 'waiting'.
Stacktrace:
Error: Expected 'ready' to equal 'waiting'.