5

テストには laika を、ルーティングにはmeteor-routerパッケージを使用しています。いくつかのページに移動し、フォームに入力し、送信し、成功メッセージを確認するテストを実行したいのですが、ナビゲーション部分で立ち往生しています。これは私の最初の試みでした:

var assert = require('assert');

suite('Router', function() {
  test('navigate', function(done, server, client) {
    client.eval(function() {
      Meteor.Router.to('test');
      var title = $('h1').text();
      emit('title', title);        
    })
    .once('title', function(title) {
      assert.equal(title, 'Test');
      done();
    });
  });
});

Meteor.Router.toにはコールバックがなく、新しいページが読み込まれたときに次の行を実行する方法がわからないため、これは機能しません。

私はこのようなものでも試しました

var page = require('webpage').create();

page.open('http://localhost:3000/test', function () { 
  ... 
}

しかし、私はエラーが発生しましたError: Cannot find module 'webpage'

編集

Iron routerに移行するので、それに関する回答も役に立ちます。

4

2 に答える 2

0

Laika にはwaitForDOM()、特定の DOM 要素が表示されるまで待機するように設定できる関数が含まれるようになりました。この場合は、読み込んでいるページの要素になります。

client.eval(function() {
    Router.go( 'test' );
    waitForDOM( 'h1', function() {
        var title = $('h1').text();
        emit( 'title', title ); 
    });
});

最初のパラメーターは jQuery セレクターです。

于 2014-02-06T20:16:50.493 に答える