1

我发现 stub 和 mock 在测试中非常有帮助。但我想知道一件事。我想一个例子会清楚地表明这一点。

Class A {
    public function isOk() {
        // some work
    }

    public function iAmDepend() {
        if ($this->isOk()) {
            // do work
        }
    }
}

class TestA {
    public function testIsOk() {
        // Test itOk here
    }

    public function testIAmDepend() {
        mock(A)->method(isOk)->return(true);
        // tests for iAmDepend
    }

}

做这样的事情是明智的吗?测试类的存根方法。或者它可能违反了一些规则?

PS。我无法重构代码

4

1 回答 1

1

您的示例是正确的,即testIsOk仅测试IsOk,并且testIAmDepend仅测试IAmDepend

但是你必须了解 mock 和 stub 之间的重要区别:mock 和 stub 之间的区别

在您的示例中,如果testIAmDepend正在验证isOk已使用某些参数调用,并且这是您对 unittest 的断言的一部分,则这是mock。否则,这是stub,您将无法验证它是否已被调用。

于 2012-07-18T11:49:10.957 回答