使用 Chai Mocha 测试 js 警报
Testing js alert with Chai Mocha
我正在尝试编写一个测试,如果弹出警报则通过,如果警报未能弹出则失败。
我正在将 Mocha 与 Chai 和 Sinon 一起使用。
这是我要测试的功能:
function generateAlert(x){
if(x){
alert('X is true');
} else { return}
}
我正在尝试做什么(伪):
describe('AlertView', function (){
it('should create an alert only when x is true', function(){
//check if alert is rendering and contains correct string
chai.assert.alertHappens(generateAlert(True), 'X is true');
//or at least check if alert happens at all
chai.assert.alertHappens(generateAlert(True), true);
}}
)}
我是 Mocha Chai 的新手,我不确定如何检查警报的存在或检查警报的内容。我查看了 Chai 图书馆,但没能找到任何可以做到这一点的东西。是否有我错过的 Chai 方法或其他检查警报的方法?
我假设您正在测试的 alert()
是您正在测试的默认 Window.alert
函数。我建议您查看 Sinon library which allows you to create Spies 以了解您现有的功能。所以你可以检查函数是否被调用,调用了多少次以及参数是什么。
我会用间谍覆盖您代码中的 alert
,然后只看到将正确的参数传递给警报。
这是对我有用的代码:
'use strict';
var chai = require('chai');
var expect = chai.expect;
var sinon = require('sinon');
var alert; // We are going to overwrite default alert() function
function generateAlert(x) {
if (!x) {
return;
}
alert(x);
}
describe('AlertView', function() {
beforeEach(function() {
alert = sinon.spy();
});
it('should create an alert only when x is true', function() {
generateAlert(true);
expect(alert.calledOnce).to.be.true;
expect(alert.args[0][0]).to.equal(true);
});
it('should create an alert only when x is some string', function() {
generateAlert('X is true');
expect(alert.calledOnce).to.be.true;
expect(alert.args[0][0]).to.equal('X is true');
});
it('should not create an alert only when x is false', function() {
generateAlert();
expect(alert.callCount).to.equal(0);
});
});
我正在尝试编写一个测试,如果弹出警报则通过,如果警报未能弹出则失败。
我正在将 Mocha 与 Chai 和 Sinon 一起使用。
这是我要测试的功能:
function generateAlert(x){
if(x){
alert('X is true');
} else { return}
}
我正在尝试做什么(伪):
describe('AlertView', function (){
it('should create an alert only when x is true', function(){
//check if alert is rendering and contains correct string
chai.assert.alertHappens(generateAlert(True), 'X is true');
//or at least check if alert happens at all
chai.assert.alertHappens(generateAlert(True), true);
}}
)}
我是 Mocha Chai 的新手,我不确定如何检查警报的存在或检查警报的内容。我查看了 Chai 图书馆,但没能找到任何可以做到这一点的东西。是否有我错过的 Chai 方法或其他检查警报的方法?
我假设您正在测试的 alert()
是您正在测试的默认 Window.alert
函数。我建议您查看 Sinon library which allows you to create Spies 以了解您现有的功能。所以你可以检查函数是否被调用,调用了多少次以及参数是什么。
我会用间谍覆盖您代码中的 alert
,然后只看到将正确的参数传递给警报。
这是对我有用的代码:
'use strict';
var chai = require('chai');
var expect = chai.expect;
var sinon = require('sinon');
var alert; // We are going to overwrite default alert() function
function generateAlert(x) {
if (!x) {
return;
}
alert(x);
}
describe('AlertView', function() {
beforeEach(function() {
alert = sinon.spy();
});
it('should create an alert only when x is true', function() {
generateAlert(true);
expect(alert.calledOnce).to.be.true;
expect(alert.args[0][0]).to.equal(true);
});
it('should create an alert only when x is some string', function() {
generateAlert('X is true');
expect(alert.calledOnce).to.be.true;
expect(alert.args[0][0]).to.equal('X is true');
});
it('should not create an alert only when x is false', function() {
generateAlert();
expect(alert.callCount).to.equal(0);
});
});