関数が呼び出されていないことをテストするにはどうすればよいですか?


88

私はルーターをテストしていて、2つの関数があり、最初の関数が呼び出され、2番目の関数が呼び出されなかったかどうかをテストする必要があります。メソッドはありますがtoHaveBeenCalled、関数が呼び出されなかったかどうかをテストするメソッドはありません。どうすればそれをテストできますか?

私はこのようなコードを持っています:

var args, controller, router;
beforeEach(function() {
    controller = {
        foo: function(name, id) {
            args = [].slice.call(arguments);
        },
        bar: function(name) {
        }
    };
    spyOn(controller, "foo").and.callThrough();
    spyOn(controller, "bar").and.callThrough();
    router = new route();
    router.match('/foo/bar/{{id}}--{{name}}', controller.foo);
    router.match('/foo/baz/{{id}}--{{name}}', controller.bar);
    router.exec('/foo/bar/10--hello');
});
it('foo route shuld be called', function() {
    expect(controller.foo).toHaveBeenCalled();
});
it('bar route shoud not be called', function() {
    // how to test if bar was not called?
});

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.