mock_objects_test.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 995 行 · 第 1/3 页

SVN-BASE
995
字号
    }    function testSequenceFallback() {        $mock = &new MockDummy();        $mock->setReturnValueAt(0, "aMethod", "aaa", array('a'));        $mock->setReturnValueAt(1, "aMethod", "bbb", array('a'));        $mock->setReturnValue("aMethod", "AAA");        $this->assertIdentical($mock->aMethod('a'), "aaa");        $this->assertIdentical($mock->aMethod('b'), "AAA");    }    function testMethodInterference() {        $mock = &new MockDummy();        $mock->setReturnValueAt(0, "anotherMethod", "aaa");        $mock->setReturnValue("aMethod", "AAA");        $this->assertIdentical($mock->aMethod(), "AAA");        $this->assertIdentical($mock->anotherMethod(), "aaa");    }}class TestOfMockExpectationsThatPass extends UnitTestCase {    function testAnyArgument() {        $mock = &new MockDummy();        $mock->expect('aMethod', array('*'));        $mock->aMethod(1);        $mock->aMethod('hello');    }    function testAnyTwoArguments() {        $mock = &new MockDummy();        $mock->expect('aMethod', array('*', '*'));        $mock->aMethod(1, 2);    }    function testSpecificArgument() {        $mock = &new MockDummy();        $mock->expect('aMethod', array(1));        $mock->aMethod(1);    }    function testExpectation() {        $mock = &new MockDummy();        $mock->expect('aMethod', array(new IsAExpectation('Dummy')));        $mock->aMethod(new Dummy());    }    function testArgumentsInSequence() {        $mock = &new MockDummy();        $mock->expectAt(0, 'aMethod', array(1, 2));        $mock->expectAt(1, 'aMethod', array(3, 4));        $mock->aMethod(1, 2);        $mock->aMethod(3, 4);    }    function testAtLeastOnceSatisfiedByOneCall() {        $mock = &new MockDummy();        $mock->expectAtLeastOnce('aMethod');        $mock->aMethod();    }    function testAtLeastOnceSatisfiedByTwoCalls() {        $mock = &new MockDummy();        $mock->expectAtLeastOnce('aMethod');        $mock->aMethod();        $mock->aMethod();    }    function testOnceSatisfiedByOneCall() {        $mock = &new MockDummy();        $mock->expectOnce('aMethod');        $mock->aMethod();    }    function testMinimumCallsSatisfiedByEnoughCalls() {        $mock = &new MockDummy();        $mock->expectMinimumCallCount('aMethod', 1);        $mock->aMethod();    }    function testMinimumCallsSatisfiedByTooManyCalls() {        $mock = &new MockDummy();        $mock->expectMinimumCallCount('aMethod', 3);        $mock->aMethod();        $mock->aMethod();        $mock->aMethod();        $mock->aMethod();    }    function testMaximumCallsSatisfiedByEnoughCalls() {        $mock = &new MockDummy();        $mock->expectMaximumCallCount('aMethod', 1);        $mock->aMethod();    }    function testMaximumCallsSatisfiedByNoCalls() {        $mock = &new MockDummy();        $mock->expectMaximumCallCount('aMethod', 1);    }}class MockWithInjectedTestCase extends SimpleMock {    function &_getCurrentTestCase() {        $context = &SimpleTest::getContext();        $test = &$context->getTest();        return $test->getMockedTest();    }}SimpleTest::setMockBaseClass('MockWithInjectedTestCase');Mock::generate('Dummy', 'MockDummyWithInjectedTestCase');SimpleTest::setMockBaseClass('SimpleMock');Mock::generate('SimpleTestCase');class LikeExpectation extends IdenticalExpectation {    function LikeExpectation($expectation) {        $expectation->_message = '';        $this->IdenticalExpectation($expectation);    }    function test($compare) {        $compare->_message = '';        return parent::test($compare);    }    function testMessage($compare) {        $compare->_message = '';        return parent::testMessage($compare);    }}class TestOfMockExpectations extends UnitTestCase {    var $test;    function setUp() {        $this->test = &new MockSimpleTestCase();    }    function &getMockedTest() {        return $this->test;    }    function testSettingExpectationOnNonMethodThrowsError() {        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectMaximumCallCount('aMissingMethod', 2);        $this->assertError();    }    function testMaxCallsDetectsOverrun() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MaximumCallCountExpectation('aMethod', 2)),                3));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectMaximumCallCount('aMethod', 2);        $mock->aMethod();        $mock->aMethod();        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testTallyOnMaxCallsSendsPassOnUnderrun() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MaximumCallCountExpectation('aMethod', 2)),                2));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectMaximumCallCount("aMethod", 2);        $mock->aMethod();        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testExpectNeverDetectsOverrun() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)),                1));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectNever('aMethod');        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testTallyOnExpectNeverStillSendsPassOnUnderrun() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)),                0));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectNever('aMethod');        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testMinCalls() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MinimumCallCountExpectation('aMethod', 2)),                2));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectMinimumCallCount('aMethod', 2);        $mock->aMethod();        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testFailedNever() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MaximumCallCountExpectation('aMethod', 0)),                1));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectNever('aMethod');        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testUnderOnce() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new CallCountExpectation('aMethod', 1)),                0));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectOnce('aMethod');        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testOverOnce() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new CallCountExpectation('aMethod', 1)),                2));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectOnce('aMethod');        $mock->aMethod();        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testUnderAtLeastOnce() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new MinimumCallCountExpectation('aMethod', 1)),                0));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectAtLeastOnce("aMethod");        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testZeroArguments() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new ParametersExpectation(array())),                array(),                '*'));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expect("aMethod", array());        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testExpectedArguments() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new ParametersExpectation(array(1, 2, 3))),                array(1, 2, 3),                '*'));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expect('aMethod', array(1, 2, 3));        $mock->aMethod(1, 2, 3);        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testFailedArguments() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new ParametersExpectation(array('this'))),                array('that'),                '*'));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expect('aMethod', array('this'));        $mock->aMethod('that');        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testWildcardsAreTranslatedToAnythingExpectations() {        $this->test->expectOnce('assert', array(                new LikeExpectation(new ParametersExpectation(array(                            new AnythingExpectation(), 123, new AnythingExpectation()))),                array(100, 123, 101),                '*'));        $mock = &new MockDummyWithInjectedTestCase($this);        $mock->expect("aMethod", array('*', 123, '*'));        $mock->aMethod(100, 123, 101);        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testSpecificPassingSequence() {        $this->test->expectAt(0, 'assert', array(                new LikeExpectation(new ParametersExpectation(array(1, 2, 3))),                array(1, 2, 3),                '*'));        $this->test->expectAt(1, 'assert', array(                new LikeExpectation(new ParametersExpectation(array('Hello'))),                array('Hello'),                '*'));        $mock = &new MockDummyWithInjectedTestCase();        $mock->expectAt(1, 'aMethod', array(1, 2, 3));        $mock->expectAt(2, 'aMethod', array('Hello'));        $mock->aMethod();        $mock->aMethod(1, 2, 3);        $mock->aMethod('Hello');        $mock->aMethod();        $mock->_mock->atTestEnd('testSomething', $this->test);    }    function testNonArrayForExpectedParametersGivesError() {        $mock = &new MockDummyWithInjectedTestCase();        $mock->expect("aMethod", "foo");        $this->assertErrorPattern('/\$args.*not an array/i');        $mock->aMethod();        $mock->tally();        $mock->_mock->atTestEnd('testSomething', $this->test);   }}class TestOfMockComparisons extends UnitTestCase {    function testEqualComparisonOfMocksDoesNotCrash() {        $expectation = &new EqualExpectation(new MockDummy());        $this->assertTrue($expectation->test(new MockDummy(), true));    }    function testIdenticalComparisonOfMocksDoesNotCrash() {        $expectation = &new IdenticalExpectation(new MockDummy());        $this->assertTrue($expectation->test(new MockDummy()));    }}class ClassWithSpecialMethods {    function __get($name) { }    function __set($name, $value) { }    function __isset($name) { }    function __unset($name) { }    function __call($method, $arguments) { }

⌨️ 快捷键说明

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