Dun*_*yne 3 coffeescript jasmine ruby-on-rails-3.1
我正在编写一些Javascript类的规范(backbone.js视图,用Coffeescript编写),我想确保一个视图构建另一个视图.
我试图通过监视构造函数来做到这一点,如下所示:
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()
Run Code Online (Sandbox Code Playgroud)
initialize()对AviaView 的调用肯定会导致调用MatricesView构造函数,礼貌这一行:
new Avia.MatricesView($("#tabs-3")).initialize()
Run Code Online (Sandbox Code Playgroud)
它确实有效; 如果我手动运行应用程序,我可以看到正在调用的构造函数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.
Run Code Online (Sandbox Code Playgroud)
我和几位同事交谈了,他们同意这应该有用......有人能建议一种监视施工人员的好方法吗?
小智 5
怎么样:
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2435 次 |
| 最近记录: |