0

現在、javascipt コードのテストを開始していますが、解決できない問題があります。私はバックボーン アプリ (AMD/requirejs 駆動) を持っており、BDD テストに Mocha (Sinon、Chai など) を使用しています。これで基本的にセットアップは終了です。

このクラスについて話しているとしましょう

class MyApp extends App
    init: ->
        @initcontrollers()

    initControllers: ->
        new HeaderController()
        new NavController()

最初のメソッドinitに、次のテストケースを書くことができます

before ...

describe 'init', ->

    it 'should call @initControllers', ->
        spy = sinon.spy(@myInstance, 'initControllers')
        @myInstance.init()
        expect(spy.called).toBeTruthy()

これはかなりうまくいきます。しかし、2番目のメソッドが実際にとinitControllersの新しいインスタンスを作成するかどうかをテストしたいと思いますHeaderControllerNavController

どうすればそれを達成できますか?私は今それで立ち往生しており、それらのコントローラーを呼び出す正しい方法ではないと考え始めているため、少し混乱しています。

どんな助けでも大歓迎

4

1 に答える 1

0

私は本当に混乱しましたが、@mu-is-to-short はおそらく正しいヒントをくれました

私は今このようにしました:

describe '@initControllers', ->
    it 'should call HeaderController', ->
        headerController = new HeaderController()
        spy = sinon.spy(headerController.__proto__, 'initialize')
        @myInstance.initControllers()
        expect(spy.calledOnce).toByTruthy()

それは私にとってはうまくいきますが、それは正しいアプローチでしょうか? とにかくありがとう

于 2012-06-04T16:23:19.967 に答える