4

私は次の仕様を持っています。

describe("SN.ExitHistory", function() {

    var exitHistory;

    beforeEach(function() {

    SN.Utils = jasmine.createSpy("utils").andCallFake(function() {
        function readSNCookie(cookieName, key) {
            return "google.com";
        }

        function isUndefinedOrNull(param) {
            return (param == null) || (param === "null");
        }

        function createSNCookie(snCookieName, key, value, lifeTime) {

        }

        var me = {
            readSNCookie : readSNCookie,
            isUndefinedOrNull : isUndefinedOrNull,
            createSNCookie : createSNCookie
        };
        return me;

    })();

    exitHistory = SN.ExitHistory();

    });

    it("return last exit link", function() {
        expect(exitHistory.getLastExitLink()).toEqual("google.com");
    });

 });

exitHistory.getLastExitLink内部使用SN.Utils

テストが完了した後、Jasmine はスパイ オブジェクト utils を削除しません。次のテスト スイートでも、同じユーティリティが存在することがわかります。各テストが完了した後にスパイ オブジェクトをリセットする方法はありますか?

スパイを作成する代わりに、utils 用の新しいオブジェクトを作成すると、動作は同じになります。次に、このシナリオでのスパイと実際のオブジェクトの違いは何ですか?

私が間違っている場合は修正してください。

4

2 に答える 2

6

私はしばらく前に同じ問題を抱えていましたが、何日も苦労した後、解決策を見つけました。他の方法を使用すると、スパイがリセットされるので、試してみてください

spyOn(SN, 'Utils');

スパイについては、 https ://github.com/pivotal/jasmine/wiki/Spies で説明されています。

于 2012-08-10T09:02:56.557 に答える