1

スタブとモックがテストに非常に役立つことを発見しました。しかし、私は一つのことについて疑問に思います。例ではっきりとわかると思います。

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です。

しかし、あなたが理解しなければならないモックとスタブの間には重要な違いがあります:モックとスタブの違いです。

あなたの例では、それがいくつかの引数で呼び出されたtestIAmDependことを確認しisOkており、これが unittest のアサーションの一部である場合、これはmockです。それ以外の場合、これはstubであり、呼び出されたかどうかを確認するつもりはありません。

于 2012-07-18T11:49:10.957 に答える