1

プロジェクトにテストを組み込むために、最近ジャスミンで遊んでいます。カルマ (以前のカルマ) を使用してワークフローを自動化するまで、すべてがうまく機能しているように見えました。

私の src ディレクトリには、いくつかの単純なメソッドを持つ単純な Cal​​culator オブジェクトがあります。

現在の変数 = 0;

Calculator.prototype.add = function() {
if (arguments.length < 2) { 
    // we only have one arguments
    current += arguments[0];
    return current;
} else { 
    // more than one arguments
    for( var i in arguments ) 
        current += arguments[i];
    return current;
}
};

Calculator.prototype.substract = function() {
var currentValue = arguments[0];

for ( var i = 1; i < arguments.length; i++ ) 
    currentValue -= arguments[i];   
return currentValue;
};

Calculator.prototype.reset = function() {
window.current = 0;
}

次に、私の仕様ファイルには、次のものがあります (すべてのテストは Karma なしでパスします)。

var 計算機 = new Calculator();

describe('Calculator', function() {
beforeEach(function() {
    window.current = 0;
});

describe('When adding numbers', function() {
    it('should store the current value at all times', function() {
        expect(window.current).toBeDefined();
    });

    it('should add numbers', function() {
        expect(window.calculator.add(5)).toEqual(5);
        expect(window.calculator.add(10)).toEqual(15);
    });

    it('should add any number of numbers', function() {
        expect(calculator.add(1, 2, 3)).toEqual(6);
        expect(calculator.add(1, 2)).toEqual(9);
    })
});

describe('When substracting numbers', function() {
    it('should substract any number of numbers', function() {
        expect(calculator.substract(5, 3)).toEqual(2);
    });
});

it('should reset the current value back to zero', function() {
    window.current = 20;
    calculator.reset();

    expect(window.current).toEqual(0);

    calculator.add(5);
    calculator.add(20);
    expect(window.current).toEqual(25);

    calculator.reset();
    expect(window.current).toEqual(0);
});
});

karma start を実行すると、次のメッセージが表示されます: Chrome 28.0 (Mac) ERROR Uncaught ReferenceError: Calculator is not defined at /Users/roland/learning/jasmine/jasmine-standalone-1.3.1/spec/calculator_spec.js:1

お手伝いありがとう!

4

1 に答える 1

2

Calculatorスペックファイルの後にロードされているか、おそらくロードされているファイルをロードしていないようです。Karma 構成ファイルでは、次のようにします。

files = [
  'path/to/calculator.js',
  JASMINE,
  JASMINE_ADAPTER,   
  'path/to/calculator_spec.js'
];
于 2013-07-12T04:25:20.743 に答える