2015-06-26 5 views
-1

Я хотел бы создать ложную ошибку в модульном тесте.
Вот мой тестовый вопрос.
TypeError: Невозможно вызвать метод 'throws' of undefined. В модульном тесте


./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; 
       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(); 
    }); 
}); 

выход:

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 :) 

Как найти решение для них?
Технический термин позвольте мне крутиться вокруг в течение нескольких часов.
Любая помощь будет оценена по достоинству.

С наилучшими пожеланиями
Сарит

ответ

0

Изменение линии test.asswert.throws к test.assert.throws

+0

Теперь. Ошибки одинаковы: Ошибка: функция [Функция] была выбрана, сбросить ошибку :) – Sarit

+0

Это не то же самое и не имеет отношения к вашему вопросу –

+0

Позвольте мне исправить мою опечатку и мой последний прогресс. Держи один момент. – Sarit

 Смежные вопросы

  • Нет связанных вопросов^_^