0

私は mocha を使用して、新しく作成されたクラスに対してテストを実行しEventており、比較を行うために多数の を作成する必要があります。オブジェクト スタブを使用し、それらをクラスの実際のインスタンスに置き換えることを計画しましたEvent。これには、DB 接続の使用のために非同期コンストラクターがあります。そのため、再帰呼び出しを使用してスタブを順番に処理しています。ここに問題があります。すべてのスタブ オブジェクトが最新のインスタンスに置き換えられましたが、その理由がわかりません。どこが間違っているのか説明してください。

Event.coffee:

class Event
    start = 0
    duration = 0
    title = ""
    atype = {}

    constructor: (_start, _duration, _title, _atype, cb) ->
        start = _start
        duration = _duration
        title = _title

        evt = @
        ActivityType.find( {} =
            where: {} =
                title: _atype
        ).success( (res) ->
            atype = res

            cb? evt
        ).error( () ->
            throw new Error "unable to assign atype '#{_atype}'"
        )
# ...

Event.test.coffee:

# ...
suite "getEventAt", () ->
    events =
        FREE: {} =
            start: 0
            duration: Day.MINUTES_PER_DAY
            title: "Free time"
            type: "FREE"
        REST: {} =
            start: 10
            duration: 30
            title: "rest"
            type: "_REST"
        FITNESS: {} =
            start: 30
            duration: 30
            title: "fitness"
            type: "_FITNESS"
        WORK: {} =
            start: 20
            duration: 30
            title: "work"
            type: "_WORK"

    suiteSetup (done) ->
        buildEvent = (ki) ->
            ks = Object.keys events
            ( (k) ->
                v = events[k]
                new Event v.start, v.duration, v.title, v.type, (e) ->
                    events[k] = e
                    if k == ks[ks.length-1]
                        return done?()
                    return buildEvent(ki+1)
            )(ks[ki])
        buildEvent(0)
# ...
4

1 に答える 1