0

私はNSpecで遊んでいて、前の例と混同しています:

void they_are_loud_and_emphatic()
{
    //act runs after all the befores, and before each spec
    //declares a common act (arrange, act, assert) for all subcontexts
    act = () => sound = sound.ToUpper() + "!!!";
    context["given bam"] = () =>
    {
        before = () => sound = "bam";
        it["should be BAM!!!"] = 
            () => sound.should_be("BAM!!!");
    };
}
string sound;

動作しますが、次の変更を行うと:

void they_are_loud_and_emphatic()
{
    //act runs after all the befores, and before each spec
    //declares a common act (arrange, act, assert) for all subcontexts
    act = () => sound = sound.ToUpper() + "!!!";
    context["given bam"] = () =>
    {
        before = () => sound = "b";
        before = () => sound += "a";
        before = () => sound += "m";
        it["should be BAM!!!"] = 
            () => sound.should_be("BAM!!!");
    };
}
string sound;

弦の音は「M!!!」しかありません。コードをデバッグすると、最後の前のコードのみが呼び出されます。おそらく私は理論を理解していませんが、すべての前のラムダは「行為」と「それ」の「前」に実行されると信じていました。何が間違っているのですか?

4

2 に答える 2