So I'm playing around with BDD and mocha with my express.js project. I'm just getting started so here is what I have as my first test case:
should = require "should"
require "../lib/models/skill.js"
describe 'Skill', ->
describe '#constructor()', ->
it 'should return an instance of class skill', ->
testSkill = new Skill "iOS", "4 years", 100
testSkill.constructor.name.should.equal 'Skill'
(also this coffeescript generates some odd looking js since it inserts returns to last statement.. is this the correct way to setup a test with coffeescript?)
Now when I run mocha I get this error:
1) Skill #constructor() should return an instance of class skill:
ReferenceError: Skill is not defined
Which I assume means skill.js was not imported correctly. My skill class is very simple at this point, just a constructor:
class Skill
constructor: (@name,@years,@width) ->
How do I import my models so my mocha test can access them?
The nice way to do this is to add a "test" npm script in package. json that calls mocha with the right arguments. This way your package. json also describes your test structure.
Mocha is a JavaScript test framework for Node. js programs, featuring browser support, asynchronous testing, test coverage reports, and use of any assertion library.
Mocha is a feature-rich JavaScript test framework running on Node. js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases.
Mocha is a testing library for Node. js, created to be a simple, extensible, and fast. It's used for unit and integration testing, and it's a great candidate for BDD (Behavior Driven Development).
You need to export your Skill class like this:
class Skill
constructor: (@name,@years,@width) ->
module.exports = Skill
And assign it to variable in your test:
should = require "should"
Skill = require "../lib/models/skill.js"
describe 'Skill', ->
describe '#constructor()', ->
it 'should return an instance of class skill', ->
testSkill = new Skill "iOS", "4 years", 100
testSkill.constructor.name.should.equal 'Skill'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With