Files
jasmine/spec/core/integration/DefaultSpyStrategySpec.js
2022-04-16 13:41:44 -07:00

67 lines
1.9 KiB
JavaScript

describe('Default Spy Strategy (Integration)', function() {
let env;
beforeEach(function() {
env = new jasmineUnderTest.Env();
env.configure({ random: false });
});
afterEach(function() {
env.cleanup_();
});
it('allows defining a default spy strategy', async function() {
env.describe('suite with default strategy', function() {
env.beforeEach(function() {
env.setDefaultSpyStrategy(function(and) {
and.returnValue(42);
});
});
env.it('spec in suite', function() {
const spy = env.createSpy('something');
expect(spy()).toBe(42);
});
});
env.it('spec not in suite', function() {
const spy = env.createSpy('something');
expect(spy()).toBeUndefined();
});
const result = await env.execute();
expect(result.overallStatus).toEqual('passed');
});
it('uses the default spy strategy defined when the spy is created', async function() {
env.it('spec', function() {
const a = env.createSpy('a');
env.setDefaultSpyStrategy(function(and) {
and.returnValue(42);
});
const b = env.createSpy('b');
env.setDefaultSpyStrategy(function(and) {
and.stub();
});
const c = env.createSpy('c');
env.setDefaultSpyStrategy();
const d = env.createSpy('d');
expect(a()).toBeUndefined();
expect(b()).toBe(42);
expect(c()).toBeUndefined();
expect(d()).toBeUndefined();
// Check our assumptions about which spies are "configured" (this matters because
// spies that use withArgs() behave differently if they are not configured).
expect(a.and.isConfigured()).toBe(false);
expect(b.and.isConfigured()).toBe(true);
expect(c.and.isConfigured()).toBe(true);
expect(d.and.isConfigured()).toBe(false);
});
const result = await env.execute();
expect(result.overallStatus).toEqual('passed');
});
});