2

次のコードでビューをどのように単体テストするのか疑問に思っています:

require('mithril');

var practice = {};

practice.vm = {
  init: function() {
    this.modules = [
      { name: '1' },
      { name: '2' },
      { name: '3' }
    ]
  }
};

practice.controller = function() {
  practice.vm.init();
};

practice.view = function(controller) {
  return [
    m('h1'),
    practice.vm.modules.map(function(module) {
      return m('.module', [ m('.module-name', module.name) ]);
    })
  ];
};

module.exports = practice;

現在、次のテストがあります。

var chai = require('chai').should();
var practice = require('../../app/modules/practice.module');
var query = require('mithril-query');

describe('view', function() {
  it('shows all the modules along with their names', function() {
    // TODO: Mock view-model here somehow!
    //
    // I would like "practice.vm.modules" to return a stubbed
    // response so that I can test this behavior in isolation.

    var view = query(practice.view({}));

    view.find('.module').length.should.equal(3);
    view.find('.module .module-name')[0].children[0].should.equal('Bashing');
    view.find('.module .module-name')[1].children[0].should.equal('Smashing');
    view.find('.module .module-name')[2].children[0].should.equal('Whapping');
  });
});

ここでご指導いただきありがとうございます!これを行う唯一の方法は を渡すことのpractice.vmように思えますが、ミスリルを使用してそれを行う方法がわかりません。

4

1 に答える 1