2016-10-12 4 views
0

J'ai lutté pendant des jours avec la façon de construire un bon workflow de test. Je me rends compte que les tests doivent mocker les dépendances de base de données, mais le cas est que j'ai besoin de tester l'ensemble du processus, ainsi que de vraies requêtes db. Dans le code suivant, j'ai besoin de mon modèle pour pouvoir effectuer des opérations sur la base de données telles que la suppression de données de test et la transmission de données de test.TypeScript, mangouste, schémas exigeant le jasmin

Les questions sont les suivantes:

  1. Quelle est la bonne façon de référencer le schéma/modèle? Ou existe-t-il un moyen d'écrire des tests de jasmin en utilisant un texte dactylographié?

Le code ne fonctionne pas, comme il est dit que BucketConfigS.remove est pas une fonction:

'use strict'; 
let BucketConfigS = require('../dist/app/BucketConfig/BucketConfigSchema'); 

describe('Bucket config collection:',() => { 
    describe('GetAll service -',() => { 
     describe('Given that there are no configs', function() { 
      beforeEach(done => { 
       done(); 
      }); 
      afterEach(done => { 
       BucketConfigS.remove({}, done); 
       done(); 
      }); 
      it('should return an empty array', function() { 
       // test case 
      }); 
     }); 
    }); 
}); 

J'ai aussi essayé la ligne suivante nécessitent:

let BucketConfigS = require('../dist/app/BucketConfig/BucketConfigSchema').default; 

Cependant, il Brokes l'ensemble de la suite de tests (aucun résultat de test n'est écrit).

Le fichier de schéma ressemble à ceci:

"use strict"; 
var DataAccess_1 = require("./../common/DataAccess"); 
var mongoose = DataAccess_1.DataAccess.mongooseInstance; 
var mongooseConnection = DataAccess_1.DataAccess.mongooseConnection; 
var BucketConfigSchema = (function() { 
    function BucketConfigSchema() { 
    } 
    Object.defineProperty(BucketConfigSchema, "schema", { 
     get: function() { 
      var schema = mongoose.Schema({ 
       AppName: { 
        type: String, 
        required: true 
       }, 
       Platform: { 
        type: String, 
        required: true 
       }, 
       Segment: { 
        type: String, 
        required: true 
       }, 
       UpdateTime: { 
        type: Date, 
        default: Date.now 
       } 
      }); 
      return schema; 
     }, 
     enumerable: true, 
     configurable: true 
    }); 
    return BucketConfigSchema; 
}()); 
var BucketConfig = mongooseConnection.model("BucketConfig", BucketConfigSchema.schema); 
Object.defineProperty(exports, "__esModule", { value: true }); 
exports.default = BucketConfig; 

Ceci est le résultat de la compilation de:

import { DataAccess } from "./../common/DataAccess"; 
import { IBucketConfig } from "./IBucketConfig"; 

let mongoose = DataAccess.mongooseInstance; 
let mongooseConnection = DataAccess.mongooseConnection; 

class BucketConfigSchema { 

    static get schema() { 
     let schema = mongoose.Schema({ 
      AppName: { 
       type: String, 
       required: true 
      }, 
      Platform: { 
       type: String, 
       required: true 
      }, 
      Segment: { 
       type: String, 
       required: true 
      }, 
      UpdateTime: { 
       type: Date, 
       default: Date.now 
      } 
     }); 

     return schema; 
    } 
} 

let BucketConfig = mongooseConnection.model<IBucketConfig>("BucketConfig", BucketConfigSchema.schema); 
export default BucketConfig; 

Répondre

0

Je ne sais pas pourquoi, mais

let BucketConfigS = require('../dist/app/BucketConfig/BucketConfigSchema').default; 

a commencé à travailler ...