我试图在浏览器上使用mocha运行chai间谍,但有些东西不起作用。
使用此html配置:
<html>
<head>
<meta charset="utf-8">
<title>Mocha Tests</title>
<link rel="stylesheet" href="./node_modules/mocha/mocha.css" />
</head>
<body>
<div id="mocha"></div>
<script src="./node_modules/mocha/mocha.js"></script>
<script src="./node_modules/chai/chai.js"></script>
<script src="./node_modules/chai-spies/chai-spies.js"></script>
<script>
mocha.setup('bdd')
mocha.reporter('html');
var expect = chai.expect;
</script>
<script src="./test.js"></script>
<script>
if (navigator.userAgent.indexOf('PhantomJS') < 0) {
mocha.run();
}
</script>
</body>
</html>
这个测试文件:
describe("test spies", function () {
it("are worning", function () {
function myFunction () {
console.log("Hello");
}
var spy = chai.spy(myFunction);
expect(spy).to.be.spy;
myFunction();
expect(spy).to.have.been.called();
});
});
我收到以下断言错误:
AssertionError: expected { Spy } to have been called
at Context.<anonymous> (test/input-text-test-fixture.html:282:28)
有人可以告诉我我做错了什么吗?
答案 0 :(得分:0)
你需要调用间谍本身 - 而不是函数。
describe("test spies", function () {
it("are worning", function () {
function myFunction () {
console.log("Hello");
}
var spy = chai.spy(myFunction);
expect(spy).to.be.spy;
spy(); // Call the spy here
expect(spy).to.have.been.called();
});
});
spy包装函数并在内部调用它。只需调用函数本身就可以让chai-spies
无法记录实际调用的函数。