mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-14 06:43:25 +08:00
95 lines
2.3 KiB
JavaScript
95 lines
2.3 KiB
JavaScript
/// <reference types="Cypress" />
|
|
|
|
context('Spies, Stubs, and Clock', () => {
|
|
it('cy.spy() - wrap a method in a spy', () => {
|
|
// https://on.cypress.io/spy
|
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks');
|
|
|
|
const obj = {
|
|
foo() {},
|
|
};
|
|
|
|
const spy = cy.spy(obj, 'foo').as('anyArgs');
|
|
|
|
obj.foo();
|
|
|
|
expect(spy).to.be.called;
|
|
});
|
|
|
|
it('cy.spy() retries until assertions pass', () => {
|
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks');
|
|
|
|
const obj = {
|
|
/**
|
|
* Prints the argument passed
|
|
*
|
|
* @param x {any}
|
|
*/
|
|
foo(x) {
|
|
console.log('obj.foo called with', x);
|
|
},
|
|
};
|
|
|
|
cy.spy(obj, 'foo').as('foo');
|
|
|
|
setTimeout(() => {
|
|
obj.foo('first');
|
|
}, 500);
|
|
|
|
setTimeout(() => {
|
|
obj.foo('second');
|
|
}, 2500);
|
|
|
|
cy.get('@foo').should('have.been.calledTwice');
|
|
});
|
|
|
|
it('cy.stub() - create a stub and/or replace a function with stub', () => {
|
|
// https://on.cypress.io/stub
|
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks');
|
|
|
|
const obj = {
|
|
/**
|
|
* Prints both arguments to the console
|
|
*
|
|
* @param a {string}
|
|
* @param b {string}
|
|
*/
|
|
foo(a, b) {
|
|
console.log('a', a, 'b', b);
|
|
},
|
|
};
|
|
|
|
const stub = cy.stub(obj, 'foo').as('foo');
|
|
|
|
obj.foo('foo', 'bar');
|
|
|
|
expect(stub).to.be.called;
|
|
});
|
|
|
|
it('cy.clock() - control time in the browser', () => {
|
|
// https://on.cypress.io/clock
|
|
|
|
// create the date in UTC so its always the same
|
|
// no matter what local timezone the browser is running in
|
|
const now = new Date(Date.UTC(2017, 2, 14)).getTime();
|
|
|
|
cy.clock(now);
|
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks');
|
|
cy.get('#clock-div').click().should('have.text', '1489449600');
|
|
});
|
|
|
|
it('cy.tick() - move time in the browser', () => {
|
|
// https://on.cypress.io/tick
|
|
|
|
// create the date in UTC so its always the same
|
|
// no matter what local timezone the browser is running in
|
|
const now = new Date(Date.UTC(2017, 2, 14)).getTime();
|
|
|
|
cy.clock(now);
|
|
cy.visit('https://example.cypress.io/commands/spies-stubs-clocks');
|
|
cy.get('#tick-div').click().should('have.text', '1489449600');
|
|
cy.tick(10000); // 10 seconds passed
|
|
cy.get('#tick-div').click().should('have.text', '1489449610');
|
|
});
|
|
});
|