2

こんにちは、JavaScriptを初めて使用し、Quintフレームワークを使用して関数の単体テストに取り組んでいますが、問題が発生しているため、専門家の支援が必要です。

これが私の問題です

私はこのようなcalc.jsという名前のファイルを持っています

var calc; // global variable
(function(){
  calc = (function(){
        function calc(container, options) {
           this._container = container;
           this._jq_container = $(container);
           this._options = options || {};
           this.setupDefaults();

        }
        calc.prototype.setupDefaults = function() {
           var _self = this;
          _self._options.type = _self._options.type ? _self._options.type : 'add';
        };
        calc.prototype.add = function (val1, val2) { 
            return val1 + val2;
        };
        calc.prototype.sub = function (val1, val2) { 
            return val1 - val2;
        }; 
  return calc;
  })();
  $.fn.calc = function(options){
    this.each(function(){
      return new calc(this, options);
    });
  };
})();

今、私はqunitのhtmlファイルを持っていますこのようなもの

<!DOCTYPE html>  
<html>  
<head>  
    <title>QUnit Test Suite</title>  
        <link rel="stylesheet" href="qunit/qunit.css">
    <script src="qunit/qunit.js"></script>
        <script src="http://code.jquery.com/jquery-1.7.2.js" type="text/javascript"></script>
    <script type="test/javascript" src="calc.js"></script>   
 <script>
  $(document).ready(function(){

test('add function test', function() { 

 equal(calc.add(2,4),"6" ,"function working correctly");
 /*I have also tried to access add function using some other method but alway got an error*/
});

});
</script>
</head>  
<body>  
    <h1 id="qunit-header">QUnit Test Suite</h1>  
    <h2 id="qunit-banner"></h2>  
    <div id="qunit-testrunner-toolbar"></div>  
    <h2 id="qunit-userAgent"></h2>  
    <ol id="qunit-tests"></ol>  
</body>  
</html> 

私のhtmlとcalc.jsの両方が同じファイルにあり、このファイルを実行すると、calcが定義されていないというエラーが発生しました

calcをグローバルにしたので、なぜか理解できません。私も使ってみwindow.calc = calcましたが、すべて無駄ですhtmlテストファイルでこれらの関数にアクセスする方法を教えてください。助けていただければ幸いです。

4

1 に答える 1

0

コード ブロックを jsfiddle.net で実行しましたが、関数呼び出しがcalc.add(2,4);実行されませんでした。

呼び出しを変更し、calc.prototype.add(2,4)意図したとおりに関数を呼び出すことができました。.prototypeをQUnit テストに追加することをお勧めしますか?

于 2012-08-02T22:41:27.553 に答える