だから私はテスト駆動開発に入りたいと思っていたので、自分のプロジェクトでJasmineを使うことにしました。
問題は、フィクスチャをロードできないことです。
一般的に提案されている 2 つのソリューションは次のとおりです。
- --allow-file-access-from-files でクロムを実行します
- ローカル サーバーからファイルを提供する
だから私は最初の解決策を使用しましたが、結果はありませんでした。
次に、 localhost/fixture/my_fixtureが my_fixture.html のコンテンツを返すように、Web サーバーのルートを設定しました。
したがって、手動でlocalhost/fixture/my_fixtureにアクセスすると、フィクスチャのコンテンツが画面に表示されます。しかし、私のジャスミン仕様ファイルでは、次を使用すると:
jasmine.getFixtures().fixturesPath = 'http://localhost/fixture'
loadFixtures('quizz_fixture')
次のエラーが表示されます。
Error: Fixture could not be loaded: http://localhost/fixture/quizz_fixture
(status: error, message: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost/fixture/quizz_fixture?_=1455854875950'.)
エラーで指定された URL を使用すると、ブラウザにフィクスチャのコンテンツがエラーなしで表示されます。
したがって、このエラーの理由がわかりません。洞察力のある人はいますか?
編集:
- ウェブサーバー:アパッチ
- ブラウザ:クローム
- OS:Windows7
編集 2
この問題は、以下の 139 行目の jasmine-jqueryで発生し、そこでfail関数が呼び出されます。ロードできないと思われる URL が実際にはブラウザで正常にロードされるため、何が起こっているのかわかりません。
jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function (relativeUrl) {
var self = this
, url = this.makeFixtureUrl_(relativeUrl)
, htmlText = ''
, request = $.ajax({
async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
cache: false,
url: url,
dataType: 'html',
success: function (data, status, $xhr) {
htmlText = $xhr.responseText
}
}).fail(function ($xhr, status, err) {
throw new Error('Fixture could not be loaded: ' + url + ' (status: ' + status + ', message: ' + err.message + ')')
})
結果は次のとおりです。
Failed to load 'http://localhost/fixture/quizz_fixture.html?_=1456886216017'
ブラウザで呼び出されたときに機能します。私はそれを理解していません。
ありがとう。