簡體   English   中英

使用Chai Mocha測試js警報

[英]Testing js alert with Chai Mocha

我正在嘗試編寫一個測試,如果警報彈出,它將通過,如果警報未能彈出,則將失敗。

我正在使用Chai和Sinon使用Mocha。

這是我要測試的功能:

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庫,該庫可讓您為現有功能創建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);
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM