我是javascript,node.js,mocha等所有东西的相对新手.
在我的代码中,我有一个Unit对象,它有一个disable()
将disabled属性设置为true,并isDisabled()
返回disabled属性.它还有一种方法nextTurnReset()
可以在下一回合开始时重置单位.我编写了一个测试套件来测试这种行为.我首先禁用该对象,然后尝试测试它是否被禁用.但是,我在第一次测试中的单位变量 - 在传递给Mocha it()
方法的匿名函数内- 处于非禁用状态,正如我在节点的调试器中观察到的那样.
describe('#disable()', function() {
var unit = tests.newUnit();
unit.disable();
debugger;
it('disabled off turn?', function() {
debugger;
(unit.isDisabled()).should.be.exactly(true);
});
unit.nextTurnReset();
it('disabled on next turn?', function() {
(unit.isDisabled()).should.be.exactly(true);
});
unit.nextTurnReset();
it('disabled on 2nd turn?', function() {
(unit.isDisabled()).should.be.exactly(false);
});
});
Run Code Online (Sandbox Code Playgroud)
对于记录,前两个测试失败,最后一个测试成功,表明该单元从未被禁用.
从使用节点调试器的repl:在第一个debugger;
语句之后unit.disabled == true
,但在第二个debugger;
语句之后unit.disabled == false
.我希望两种情况下的值都为真.
知道为什么会这样吗?另外,编写Mocha测试以获得预期结果的正确方法是什么?
非常感谢!
我正在尝试组织一个新的打字稿项目,该项目具有单元测试,也是用 TS 编写的,在 Mocha 测试运行器中运行。
我的项目具有以下目录约定:
/project/src/ for server-side code (java)
/project/test/ server's tests
/project/resources/ client-side code (typescript)
/project/test-resources/ typescript tests.
Run Code Online (Sandbox Code Playgroud)
现在我在位于 resources/many/levels/schema.ts 的打字稿文件中有一个打字稿模块架构
我在一个打字稿文件中为 mocha 测试运行程序编写了它的测试:test-resources/many/levels/schemaTest.ts
问题是打字稿编译器无法使用以下导入语法找到模式模块:
TC2307 找不到模块架构
schemaTest.ts(版本 1):
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../../../resources/many/levels/schema.ts" />
import s = require('schema');
Run Code Online (Sandbox Code Playgroud)
schemaTest.ts(版本 2):
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" />
/// <reference path="../../../resources/many/levels/schema.ts" />
import {Schema, SchemaFactory} from 'schema';
Run Code Online (Sandbox Code Playgroud)
最后,以下版本编译但会导致运行时错误,因为模块不在 ../../../resources/many/level 而是位于 dist 目录中
/// <reference path="../typings/mocha/mocha.d.ts" />
/// <reference path="../typings/chai/chai.d.ts" /> …
Run Code Online (Sandbox Code Playgroud)