2015-09-23 4 views
3

Я собираюсь создать приложение node.js, и я искал модульное тестирование на JS. Итак, я попробовал Жасмин, кажется, весело и круто при использовании.jasmine typeError не является функцией

Ну я имею в спецификации файла: UserSpec.js

var userClass = require('../src/users.js'); 
var utils = require('../src/utils.js'); 
describe("Users tests", function() { 

    var usernameTest = "usernameTest"; 
    var emailTest = "emailTest"; 
    var passwordTest ="passwordTest"; 
    var myUser = userClass.create('usernameTest','emailTest','passwordTest'); 

    /********** 
    * TDD * 
    **********/ 
    it("is not null", function() { 
     expect(myUser).not.toBe(null); 
    }); 
    it("username not null", function() { 
     var username = myUser.username; 
     expect(username).not.toBe(null); 
    }); 
    it("is a string", function() { 
     var usernameType = typeof myUser.username; 

     expect(usernameType).toEqual("string"); 
    }); 
    it("correct username", function() { 
     var username = myUser.username; 
     expect(username).toEqual(usernameTest); 
    }); 
    it("mail not null", function() { 
     var email = myUser.email; 
     expect(email).not.toBe(null); 
    }); 
    it("correct mail", function() { 
     var email = myUser.email; 
     expect(email).toEqual(emailTest); 
    }); 
    it("password not null", function() { 
     var password = myUser.password; 
     expect(password).not.toBe(null); 
    }); 
    it("password is encrypted", function() { 
     var password = myUser.password; 
     expect(password).toEqual(utils.encrypt(password)); 
    }); 
    //TODO: User BDD (CRUD) 

, когда я запустить его с помощью консоли с ЦМД по:

jasmine-node UserSpec.js 

Я получил это:

D:\workspace\MyDL-NodeServer\spec>jasmine-node UserSpec.js 
FFFFFFFFF 

Failures: 

    1) is not null 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Object.jasmine.executeSpecsInFolder (C:\Users\Azrael\AppData\Roaming\npm\node_modules\jasmine-node\lib\jasmine-node\index.js:168:16) 
    at Object.<anonymous> (C:\Users\Azrael\AppData\Roaming\npm\node_modules\jasmine-node\lib\jasmine-node\cli.js:248:9) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 

    2) username not null 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    3) is a string 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    4) correct username 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    5) mail not null 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    6) correct mail 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    7) password not null 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    8) password is encrypted 
    Message: 
    TypeError: undefined is not a function 
    Stacktrace: 
    TypeError: undefined is not a function 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\SpecHelper.js:2:11) 
    at Timer.listOnTimeout (timers.js:119:15) 

    9) password is encrypted 
    Message: 
    Expected 'c9a7773c3a130e3ca370dad6' to equal 'daff65787a4b4f3bc47498911683901d85c88294dd1495c5'. 
    Stacktrace: 
    Error: Expected 'c9a7773c3a130e3ca370dad6' to equal 'daff65787a4b4f3bc47498911683901d85c88294dd1495c5'. 
    at null.<anonymous> (D:\workspace\MyDL-NodeServer\spec\UserSpec.js:47:20) 
    at Timer.listOnTimeout (timers.js:119:15) 

Finished in 0.037 seconds 
8 tests, 18 assertions, 9 failures, 0 skipped 

Ну, все мои тесты выполнены, и все они терпят неудачу, нормально, это правильный круг TDD , но все тезисы должны пройти. Я не могу, почему я получил эту ошибку несколько:

TypeError: undefined is not a function 

Моих два скрипта действительно импортного (пользователь также создан, и метод шифрования() действительно называется), поэтому я не могу что происходит Неправильно

У кого-то есть идея об источнике ошибки?
Thx заранее
@ Azrael_404

РЕШЕНИЕ: По умолчанию все спецификации-файлы выполняются, поэтому второй файл «SpecHelper.js» побежал по тесту. Это файл по умолчанию в демонстрационном пакете, поэтому я его не проверял. Дело в том, этот файл содержит следующее:

beforeEach(function() { 
    jasmine.addMatchers({ 
    toBePlaying: function() { 
     return { 
     compare: function (actual, expected) { 
      var player = actual; 

      return { 
      pass: player.currentlyPlayingSong === expected && player.isPlaying 
      }; 
     } 
     }; 
    } 
    }); 
}); 

beforeEach event'll назвать, прежде чем все испытания, поэтому я получил ошибку на всех моих тестах!

+3

что на ': D: \ рабочего места \ MyDL-NodeServer \ спецификации \ SpecHelper.js: 2: 11' –

+0

Блин .. содержало это a beforeEach (функция() вставлена ​​демо-пакетом ... я потрачу 2 часа на это ... Thx .. –

ответ

3

По умолчанию запущены специальные файлы , поэтому второй файл SpecHelper.js запускается при тестировании. Это файл по умолчанию в демо-пакете, поэтому я его не проверял. Факт содержит этот файл следующим образом:

beforeEach(function() { 
    jasmine.addMatchers({ 
    toBePlaying: function() { 
     return { 
     compare: function (actual, expected) { 
      var player = actual; 

      return { 
      pass: player.currentlyPlayingSong === expected && player.isPlaying 
      }; 
     } 
     }; 
    } 
    }); 
}); 

beforeEach функция будет вызываться перед всеми испытаниями, поэтому я встретил ошибку на всех моих тестах!

Так что я решил все свои ошибки, комментируя beforeEach заявления ...