I am creating an unit test. After error was thrown to my unit test. I got real error instead.
arn.js is a test subject.
m1.js is an unit test. Right now, I am testing the error which is come from mock fs.readFile().
./arn.js
var fs = require('fs');
var filename = ['README.md', 'ioio.txt', 'yoyo.txt','passwd'];
exports.readFile = function(entry,callback){
var cntent = fs.readFile(entry, "utf8" ,function(err, data) {
if (err) throw err;
//console.log(entry + " : " + data);
if (callback && typeof(callback) === "function") {
callback(null,data.substring(0,5));
}
});
}
./test/m1.js
var mock = require('mock')
var realB = require("../arn.js")
var test = require('unit.js');
var trigger1 = function(){
throw new Error ("File not found in my computer",null);
};
var b = mock("../arn.js", {
fs: {
readFile: function (entry,encoding, callback) {
if (entry === "cody.txt"){
var regEx = /txt$/;
if(regEx.test(entry)){
callback(null,'text2');
}
}
if (entry === "notfound.sure"){
callback(trigger1);
}
}
}
}, require);
describe('Test with static input', function(){
it('should return text2', function(done){
b.readFile('cody.txt', function(err,a){
test.value(a).match('text2');
done();
});
});
it('should return Invalid file extension', function(done){
test.error(function(callback){
callback(b.readFile('notfound.sure'));
});
done();
});
it('should return Invalid file extension', function(done){
b.readFile('notfound.sure', function(err, a){
test.error.hasMessage('File not found in my computer');
done();
});
});
it('should return not found', function(done){
test.assert.throws(
function(){
b.readFile('notfound.sure');
},
function(err){
if ( (err instanceof Error)){
return true;
}
},
"Expected error"
);
done();
});
});
$ mocha test/m1.js
Test with static input
✓ should return text2
1) should return Invalid file extension
2) should return Invalid file extension
3) should return not found
1 passing (9ms)
3 failing
1) Test with static input should return Invalid file extension:
AssertionError: function (){
throw new Error ("File not found in my computer",null);
} must be an instance of Error
+ expected - actual
-[Function]
+{
+ "captureStackTrace": [Function]
+ "stackTraceLimit": Infinity
+}
at Context.<anonymous> (test/m1.js:39:9)
2) Test with static input should return Invalid file extension:
Error: the function [Function] was thrown, throw an Error :)
3) Test with static input should return not found:
Error: the function [Function] was thrown, throw an Error :)
How to use unit test in proper way?
Any good example or tutorial I can start?
Best regards
Sarit
Aucun commentaire:
Enregistrer un commentaire