2017-05-02 10 views
-3

mochaが 'directoring query'のテストでエラーを出した理由を知っている人は、簡潔で直感的な回答です。おかげアサーションでエラーが発生するアサーションエラー0 == 1モカテスト中

何イム私のデータベースを実行しているから

interface.js //code block carrying the insert and find commands 


     /* 
      * Inserts "doc" into the collection "movies". 
      */ 
       exports.insert = function(db, doc, callback) { 
      // TODO: implement 
      db.collection('movies').insert(doc); 
      callback(null); 
     }; 

     /* 
     * Finds all documents in the "movies" collection 
     * whose "director" field equals the given director, 
     * ordered by the movie's "title" field. See 
     * http://mongodb.github.io/node-mongodb-native/2.0/api/Cursor.html#sort 
     */ 
     exports.byDirector = function(db, director, callback) { 
      // TODO: implement 
      db.collection('movies').find({director: director}); 
      callback(null, []); 
     }; 

    test.js //code block for running tests 

    var assert = require('assert'); 
    var connect = require('./connect'); 
    var dbInterface = require('./interface'); 
    var fs = require('fs'); 
    var movies = require('./movies'); 

    /** 
    * This test suite is meant to be run through gulp (use the `npm run watch`) 
    * script. It will provide you useful feedback while filling out the API in 
    * `interface.js`. You should **not** modify any of the below code. 
    */ 
    describe('dbInterface', function() { 
     var db; 
     var succeeded = 0; 
     var georgeLucasMovies; 

     /** 
     * This test ensures that interface.js' `insert()` function properly inserts 
     * a document into the "movies" collection. 
     */ 
     it('can insert a movie', function(done) { 
     var doc = { title: 'Rogue One', year: 2016, director: 'Gareth Edwards' }; 
     dbInterface.insert(db, doc, function(error) { 
      assert.ifError(error); 
      db.collection('movies').count({ title: 'Rogue One' }, function(error, c) { 
      assert.ifError(error); 
      assert.equal(c, 1); 
      done(); 
      }); 
     }); 
     }); 

     /** 
     * This test ensures that interface.js' `byDirector()` function can load a 
     * single document. 
     */ 
     it('can query data by director', function(done) { 
     dbInterface.byDirector(db, 'Irvin Kershner', function(error, docs) { 
      assert.ifError(error); 
      assert.ok(Array.isArray(docs)); 
      assert.equal(docs.length, 0); 
      assert.equal(docs[0].title, 'The Empire Strikes Back'); 
      ++succeeded; 
      done(); 
     }); 
     }); 

//応答を挿入して照会することができます私のサーバーを確保することから始めて、私のソフトウェアで利用可能な機能のテストを実行するためにモカを使用する方法を学習されてやろうとしていますnpmでの試験

  [21:58:30] Starting 'test'... 
      [21:58:30] Finished 'test' after 2.04 ms 


      dbInterface 
      ✓ can insert a movie 
      1) can query data by director 
      2) returns multiple results ordered by title 


      1 passing (246ms) 
      2 failing 


      1) dbInterface can query data by director: 
       TypeError: Cannot read property 'title' of undefined 
       at test.js:42:27 
       at Object.exports.byDirector (interface.js:19:3) 
       at Context.<anonymous> (test.js:38:17) 

      2) dbInterface returns multiple results ordered by title: 

       AssertionError: 0 == 4 
       + expected - actual 

       +4 
       -0 

       at test.js:57:14 
       at Object.exports.byDirector (interface.js:19:3) 
       at Context.<anonymous> (test.js:54:17) 



       Tests failed! 

答えて

0

assert.equal(docs.length, 0);をご覧ください。非常に次の行が最初の結果にそのようなタイトルがあると主張すると、クエリがゼロの結果を返すという主張は間違いであると推測します。

+0

ありがとうございます。値を1にすると、同じエラー結果が得られます。テストをパスする方法をもっと説明できますか? – OAOD

+0

テスト結果は、結果が4つあり、1つではないことを示しています。 – dmfay

関連する問題