Mocha.js --递归测试失败,但作为个人还好
Mocha.js --recursive tests fail, but fine as individuals
我有 mocha.opts 这样的:
test/mocha/*.js
--recursive
--globals reactModulesToStub
--check-leaks
--compilers .:test/jsx-compiler.js
--reporter nyan
并且有两个测试在单独调用时通过,但在使用递归选项时失败。我错过了什么吗?
例如,如果我运行 mocha 在这个单一测试上,没问题,但是在同一目录中添加类似的测试会导致所有测试失败。
/** @jsx React.DOM */
//tests/app/loginstatus-test.js
var React = require('react/addons'),
assert = require('assert'),
sinon = require('sinon'),
stubs = (function(){
global.reactModulesToStub = [
'TestClass.js'
];
})(),
MyComponent = require('../../app/modules/LoginStatus.jsx'),
TestUtils = React.addons.TestUtils,
TestContext = require('./../lib/TestContext').getRouterComponent(MyComponent),
component = TestContext.component,
dom = TestContext.dom,
flux = TestContext.flux;
describe('LoginStatus', function() {
it('renders the LoginStatus class', function() {
TestUtils.findRenderedDOMComponentWithClass(
component, 'LoginStatus');
});
it('when mounted and clicked, should call AppActions.showPopupModal', function() {
sinon.spy(flux.actions.AppActions, "showPopupModal");
TestUtils.Simulate.click(component.refs.loginStatusText.getDOMNode());
assert(flux.actions.AppActions.showPopupModal.calledOnce);
});
});
这是一个命名空间问题。我没有意识到 Mocha 将所有描述组合到同一个命名空间中,如果您需要在测试之间使用干净的变量,请将它们限定在 it();
中,这是一个很好的例子,说明如何做我之前尝试做的事情。
我有 mocha.opts 这样的:
test/mocha/*.js
--recursive
--globals reactModulesToStub
--check-leaks
--compilers .:test/jsx-compiler.js
--reporter nyan
并且有两个测试在单独调用时通过,但在使用递归选项时失败。我错过了什么吗?
例如,如果我运行 mocha 在这个单一测试上,没问题,但是在同一目录中添加类似的测试会导致所有测试失败。
/** @jsx React.DOM */
//tests/app/loginstatus-test.js
var React = require('react/addons'),
assert = require('assert'),
sinon = require('sinon'),
stubs = (function(){
global.reactModulesToStub = [
'TestClass.js'
];
})(),
MyComponent = require('../../app/modules/LoginStatus.jsx'),
TestUtils = React.addons.TestUtils,
TestContext = require('./../lib/TestContext').getRouterComponent(MyComponent),
component = TestContext.component,
dom = TestContext.dom,
flux = TestContext.flux;
describe('LoginStatus', function() {
it('renders the LoginStatus class', function() {
TestUtils.findRenderedDOMComponentWithClass(
component, 'LoginStatus');
});
it('when mounted and clicked, should call AppActions.showPopupModal', function() {
sinon.spy(flux.actions.AppActions, "showPopupModal");
TestUtils.Simulate.click(component.refs.loginStatusText.getDOMNode());
assert(flux.actions.AppActions.showPopupModal.calledOnce);
});
});
这是一个命名空间问题。我没有意识到 Mocha 将所有描述组合到同一个命名空间中,如果您需要在测试之间使用干净的变量,请将它们限定在 it();
中,这是一个很好的例子,说明如何做我之前尝试做的事情。