Comparing version 1.2.0 to 1.3.0
1.3.0 / 2015-08-22 | ||
================== | ||
* readme: add sync methods and error properties | ||
* feat: mock error support props | ||
* chore: use npm scripts | ||
1.2.0 / 2015-08-16 | ||
@@ -3,0 +10,0 @@ ================== |
@@ -0,1 +1,3 @@ | ||
'use strict'; | ||
module.exports = require('./lib/mm'); | ||
@@ -2,0 +4,0 @@ var enable = require('enable'); |
@@ -49,15 +49,9 @@ /**! | ||
var mockError = mm.error; | ||
mm.error = function (mod, method, error, timeout) { | ||
mm.error = function (mod, method, error, props, timeout) { | ||
if (!is.generatorFunction(mod[method])) { | ||
return mockError.call(mm, mod, method, error, timeout); | ||
return mockError.call(mm, mod, method, error, props, timeout); | ||
} | ||
if (!error) { | ||
error = new Error('mm mock error'); | ||
error.name = 'MockError'; | ||
} | ||
if (typeof error === 'string') { | ||
error = new Error(error); | ||
error.name = 'MockError'; | ||
} | ||
mm._createError(error, props); | ||
if (timeout) { | ||
@@ -64,0 +58,0 @@ timeout = parseInt(timeout, 10); |
/**! | ||
* mm - lib/mm.js | ||
* | ||
* Copyright(c) fengmk2 and other contributors. | ||
* Copyright(c) node-modules and other contributors. | ||
* MIT Licensed | ||
* | ||
* Authors: | ||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com) | ||
* fengmk2 <fengmk2@gmail.com> (http://fengmk2.com) | ||
*/ | ||
@@ -25,3 +25,3 @@ | ||
var mock = module.exports = function mock(obj, key, method) { | ||
var mock = module.exports = function mock(/*obj, key, method*/) { | ||
return muk.apply(null, arguments); | ||
@@ -55,9 +55,9 @@ }; | ||
/** | ||
* Mock async function error. | ||
* @param {Object} mod, module object | ||
* @param {String} method, mock module object method name. | ||
* @param {String|Error} error, error string message or error instance. | ||
* @param {Number} [tiemout], mock async callback timeout, default is 10. | ||
* create an error instance | ||
* | ||
* @param {String|Error} error | ||
* @param {Object} props | ||
* @return {Error} | ||
*/ | ||
exports.error = function (mod, method, error, timeout) { | ||
exports._createError = function (error, props) { | ||
if (!error) { | ||
@@ -71,2 +71,25 @@ error = new Error('mm mock error'); | ||
} | ||
props = props || {}; | ||
for (var key in props) { | ||
error[key] = props[key]; | ||
} | ||
return error; | ||
}; | ||
/** | ||
* Mock async function error. | ||
* @param {Object} mod, module object | ||
* @param {String} method, mock module object method name. | ||
* @param {String|Error} error, error string message or error instance. | ||
* @param {Object} [props], error properties | ||
* @param {Number} [tiemout], mock async callback timeout, default is 10. | ||
*/ | ||
exports.error = function (mod, method, error, props, timeout) { | ||
if (typeof props === 'number') { | ||
timeout = props; | ||
props = {}; | ||
} | ||
error = exports._createError(error, props); | ||
if (timeout) { | ||
@@ -139,12 +162,6 @@ timeout = parseInt(timeout, 10); | ||
* @param {String|Error} error, error string message or error instance. | ||
* @param {Object} [props], error properties | ||
*/ | ||
exports.syncError = function (mod, method, error) { | ||
if (!error) { | ||
error = new Error('mm mock error'); | ||
error.name = 'MockError'; | ||
} | ||
if (typeof error === 'string') { | ||
error = new Error(error); | ||
error.name = 'MockError'; | ||
} | ||
exports.syncError = function (mod, method, error, props) { | ||
error = exports._createError(error, props); | ||
mock(mod, method, function () { | ||
@@ -164,3 +181,3 @@ throw error; | ||
mock(mod, method, function () { | ||
return data | ||
return data; | ||
}); | ||
@@ -167,0 +184,0 @@ }; |
{ | ||
"name": "mm", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "mock mate, mock http request, fs access and so on.", | ||
"main": "index.js", | ||
"files": [ | ||
"lib", | ||
"index.js" | ||
], | ||
"scripts": { | ||
"test": "make test-all" | ||
"test": "npm run lint && mocha --check-leaks -R spec -t 5000 -r should-http test/*.test.js", | ||
"test-cov": "istanbul cover node_modules/.bin/_mocha -- --check-leaks -t 5000 -r should-http test/*.test.js", | ||
"test-travis": "npm run lint && istanbul cover node_modules/.bin/_mocha --report lcovonly -- --check-leaks -t 5000 -r should-http test/*.test.js", | ||
"lint": "eslint lib test index.js", | ||
"autod": "autod -w --prefix '~'", | ||
"cnpm": "npm install --registry=https://registry.npm.taobao.org", | ||
"contributors": "contributors -f plain -o AUTHORS" | ||
}, | ||
"config": { | ||
"blanket": { | ||
"pattern": "mm/lib" | ||
}, | ||
"travis-cov": { | ||
"threshold": 99 | ||
} | ||
}, | ||
"dependencies": { | ||
@@ -26,10 +28,9 @@ "co-sleep": "~0.0.1", | ||
"devDependencies": { | ||
"autod": "~2.0.1", | ||
"blanket": "*", | ||
"chunkstream": "~0.0.1", | ||
"co": "~4.5.4", | ||
"autod": "2", | ||
"chunkstream": "*", | ||
"co": "4", | ||
"co-mocha": "*", | ||
"co-urllib": "~0.2.3", | ||
"contributors": "*", | ||
"coveralls": "*", | ||
"eslint": "1", | ||
"istanbul-harmony": "~0.3.12", | ||
@@ -39,18 +40,20 @@ "mocha": "*", | ||
"node-patch": "*", | ||
"pedding": "~1.0.0", | ||
"should": "~6.0.1", | ||
"pedding": "1", | ||
"should": "6", | ||
"should-http": "*", | ||
"thunkify-wrap": "~1.0.4", | ||
"travis-cov": "*" | ||
"thunkify-wrap": "1" | ||
}, | ||
"homepage": "http://github.com/fengmk2/mm", | ||
"homepage": "http://github.com/node-modules/mm", | ||
"repository": { | ||
"type": "git", | ||
"url": "git://github.com/fengmk2/mm.git" | ||
"url": "git://github.com/node-modules/mm.git" | ||
}, | ||
"keywords": [ | ||
"mm" | ||
"mm", | ||
"muk", | ||
"mock", | ||
"test" | ||
], | ||
"author": "fengmk2 <fengmk2@gmail.com> (http://fengmk2.github.com/)", | ||
"author": "fengmk2 <fengmk2@gmail.com> (http://fengmk2.com/)", | ||
"license": "MIT" | ||
} |
@@ -9,3 +9,2 @@ mm | ||
[![David deps][david-image]][david-url] | ||
[![node version][node-image]][node-url] | ||
[![npm download][download-image]][download-url] | ||
@@ -23,4 +22,2 @@ | ||
[david-url]: https://david-dm.org/node-modules/mm | ||
[node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square | ||
[node-url]: http://nodejs.org/download/ | ||
[download-image]: https://img.shields.io/npm/dm/mm.svg?style=flat-square | ||
@@ -31,8 +28,6 @@ [download-url]: https://npmjs.org/package/mm | ||
![logo](https://raw.github.com/node-modules/mm/master/logo.png) | ||
## Install | ||
```bash | ||
$ npm install mm | ||
$ npm install mm --save-dev | ||
``` | ||
@@ -77,3 +72,3 @@ | ||
### .error(module, propertyName, errerMessage) | ||
### .error(module, propertyName, errerMessage, errorProperties) | ||
@@ -136,2 +131,44 @@ ```js | ||
### .syncError(module, propertyName, errerMessage, errorProperties) | ||
```js | ||
var mm = require('mm'); | ||
var fs = require('fs'); | ||
mm.syncError(fs, 'readFileSync', 'mock fs.readFile return error', {code: 'ENOENT'}); | ||
// equals | ||
fs.readFileSync = function (args...) { | ||
var err = new Error('mock fs.readFile return error'); | ||
err.code = 'ENOENT'; | ||
throw err; | ||
}; | ||
``` | ||
### .syncData(module, propertyName, value) | ||
```js | ||
mm.syncData(fs, 'readFileSync', new Buffer('some content')); | ||
// equals | ||
fs.readFileSync = function (args...) { | ||
return new Buffer('some content'); | ||
}; | ||
``` | ||
## .syncEmpty | ||
```js | ||
mm.syncEmpty(fs, 'readFileSync'); | ||
// equals | ||
fs.readFileSync = function (args...) { | ||
return; | ||
} | ||
``` | ||
### .restore() | ||
@@ -220,2 +257,3 @@ | ||
Copyright (C) 2012 - 2014 fengmk2 <fengmk2@gmail.com> | ||
Copyright (C) 2015 node-modules | ||
@@ -222,0 +260,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
15
271
23771
6
462