Ответ 1
требует возврата объекта, его следует хранить где-нибудь
var Bob = require('./bob');
а затем используйте этот объект
var bobInstance = new Bob();
У меня есть следующий тестовый код, который запускается jasmine- node в файле с именем bob_test.spec.js
require('./bob');
describe("Bob", function() {
var bob = new Bob();
it("stating something", function() {
var result = bob.hey('Tom-ay-to, tom-aaaah-to.');
expect(result).toEqual('Whatever');
});
});
Чтобы выполнить тестовый проход, я написал следующий производственный код в файле с именем bob.js
"use strict";
var Bob = function() {
}
Bob.prototype.hey = function (text) {
return "Whatever";
}
module.exports = Bob;
Когда я запускаю тест - используя jasmine-node .
- я получаю следующее F
Failures:
1) Bob encountered a declaration exception
Message:
ReferenceError: Bob is not defined
Stacktrace:
ReferenceError: Bob is not defined
at null.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:4:17)
at Object.<anonymous> (/Users/matt/Code/oss/deliberate-practice/exercism/javascript/bob/bob_test.spec.js:3:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
Finished in 0.02 seconds
1 test, 1 assertion, 1 failure, 0 skipped
Основываясь на том, что я понимаю в Javascript, я чувствую, что это должно работать. Что делает node.js по-разному с конструкторскими функциями и экспортами модулей, которые мешают этому работать, мне нравится думать, что это должно быть?
требует возврата объекта, его следует хранить где-нибудь
var Bob = require('./bob');
а затем используйте этот объект
var bobInstance = new Bob();
Это должно исправить ошибку, которую вы испытывали при запуске тестов через jasmine- node:
// Generated by CoffeeScript 1.6.2
(function() {
var Bob;
Bob = (function() {
function Bob() {}
Bob.prototype.hey = function(what) {
return 'Whatever.';
};
return Bob;
})();
module.exports = Bob;
}).call(this);
Улучшение ответа Марвина:
"use strict";
var Bob = function() {}
Bob.prototype.hey = function (text) {
return "Whatever";
}
module.exports = new Bob();
// another file
var Bob = require('./bob');
Bob.hey('text');
Итак, вы можете создать объект, передающий его в module.exports module.exports = new Bob();