⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stubcallsequencetest.groovy

📁 大名鼎鼎的java动态脚本语言。已经通过了sun的认证
💻 GROOVY
字号:
package groovy.mock.interceptorimport junit.framework.AssertionFailedError/**    Testing Groovy Stub support for multiple calls to the Collaborator with    demanding one or two methods multiple and and various ranges.    @author Dierk Koenig*/class StubCallSequenceTest extends GroovyTestCase {    StubFor stub    void setUp() {        stub = new StubFor(Collaborator.class)    }    void testUndemandedCallFailsEarly() {        // no demand here        stub.use {            def caller = new Caller()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedTwoCalledFailsEarly() {        stub.demand.one { 1 }        stub.use {            def caller = new Caller()            caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedDefaultRange() {        stub.demand.one(1..1) { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()        }    }    void testOneDemandedExactRange() {        stub.demand.one(2..2) { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedRealRange() {        stub.demand.one(1..2) { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testOneDemandedOptionalRange() {        stub.demand.one(0..2) { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testTwoDemandedNoRange() {        stub.demand.one() { 1 }        stub.demand.two() { 2 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstRangeExploited() {        stub.demand.one(1..2) { 1 }        stub.demand.two() { 2 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstRangeNotExploited() {        stub.demand.one(1..2) { 1 }        stub.demand.two() { 2 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testTwoDemandedFirstOptionalOmitted() {        stub.demand.one(0..2) { 1 }        stub.demand.two() { 2 }        stub.use {            def caller = new Caller()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }        }    }    void testMixedDemandedMinimumOutOfSequence() {        stub.demand.one(0..1) { 1 }        stub.demand.two() { 2 }        stub.demand.one() { 1 }        stub.demand.two(0..2) { 2 }        stub.demand.one() { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            assertEquals 2, caller.collaborateTwo()        }        stub.expect.verify()    }    void testMixedDemandedMaximum() {        stub.demand.one(0..1) { 1 }        stub.demand.two() { 2 }        stub.demand.one() { 1 }        stub.demand.two(0..2) { 2 }        stub.demand.one() { 1 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            // 2.times( assertEquals(2, caller.collaborateTwo()) ) // todo: why this not possible?            assertEquals 2, caller.collaborateTwo()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }    }    void testMixedDemandedOutOfSequenceFailsEarly() {        stub.demand.one(0..1) { 1 }        stub.demand.two() { 2 }        stub.demand.one() { 1 }        stub.demand.two(0..2) { 2 }        stub.demand.one() { 1 }        shouldFail(AssertionFailedError.class) { // fails on verify            stub.use {                def caller = new Caller()                assertEquals 1, caller.collaborateOne()                assertEquals 2, caller.collaborateTwo()                shouldFail(AssertionFailedError.class) { caller.collaborateTwo() }            }        }    }    void testRangeDemandedOutOfSequenceCalls() {        stub.demand.one(0..3) { 1 }        stub.demand.two(0..3) { 2 }        stub.use {            def caller = new Caller()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            assertEquals 1, caller.collaborateOne()            assertEquals 2, caller.collaborateTwo()            shouldFail(AssertionFailedError.class) { caller.collaborateOne() }        }        stub.expect.verify()    }    void testUnreachedDemandFailsOnVerify() {        stub.demand.one { 1 }        // nothing used        shouldFail(AssertionFailedError.class) { stub.expect.verify() }    }    void testRangeDemandedButNotExploitedFailsOnVerify() {        stub.demand.one(2..4) { 1 }        shouldFail(AssertionFailedError.class) { // fails on verify            stub.use {                def caller = new Caller()                assertEquals 1, caller.collaborateOne()            }            stub.expect.verify()        }    }    void testReversedRangesNotAllowed() {        shouldFail(IllegalArgumentException.class) { stub.demand.one(1..0) { 1 } }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -