gpt4 book ai didi

ruby-on-rails-3.1 - 使用 Jasmine 监视 Javascript 构造函数

转载 作者:行者123 更新时间:2023-12-01 11:54:45 27 4
gpt4 key购买 nike

我正在为一些 Javascript 类(backbone.js View ,用 Coffeescript 编写)编写规范,我想确保一个 View 构建另一个 View 。

我试图通过监视构造函数来做到这一点,就像这样:

describe 'Avia.AviaView', ->

beforeEach ->
@aviaView = new Avia.AviaView()
@matricesView = new Backbone.View()
spyOn(Avia.MatricesView, 'constructor').andReturn @matricesView

describe 'initialize', ->

beforeEach ->
@aviaView.initialize()

it 'creates a new MatricesView ', ->
expect(Avia.MatricesView.constructor).toHaveBeenCalledOnce()

AviaView 上的 initialize() 调用肯定会导致调用 MatricesView 构造函数,请注意这一行:

new Avia.MatricesView($("#tabs-3")).initialize()

绝对有效;如果我手动运行应用程序,我可以看到构造函数在 initialize() 期间被调用。但是我的 Jasmine 规范失败了:

Running Jasmine specs...
F

Avia.AviaView initialize creates a new MatricesView . (/Users/dev/avia/spec/javascripts/views/avia_view_spec.js.coffee:13)
Expected constructor to be called exactly once, but was called '0' times (line ~14)
expect(Avia.MatricesView.constructor).toHaveBeenCalledOnce();

FAIL: 1 test, 1 failure, 0.008 secs.

我已经和我的几位同事谈过,他们同意这应该有效……谁能建议一种监视构造函数的好方法?

最佳答案

怎么样:

describe 'Avia.AviaView', ->

beforeEach ->
@aviaView = new Avia.AviaView()
@matricesView = new Backbone.View()
spyOn(Avia, 'MatricesView').andReturn @matricesView

describe 'initialize', ->

beforeEach ->
@aviaView.initialize()

it 'creates a new MatricesView ', ->
expect(Avia.MatricesView).toHaveBeenCalledOnce()

关于ruby-on-rails-3.1 - 使用 Jasmine 监视 Javascript 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8318004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com