Làm cách nào để kiểm tra một hàm chưa được gọi?


84

Tôi đang thử nghiệm bộ định tuyến và có hai chức năng và tôi cần kiểm tra xem chức năng đầu tiên đã được gọi và chức năng thứ hai thì không. Có phương pháp toHaveBeenCallednhưng không có phương pháp nào để kiểm tra nếu hàm không được gọi. Làm thế nào tôi có thể kiểm tra điều đó?

Tôi có mã như thế này:

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?
});

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.